From 752d00df1ac102f3645e0c98943ae18f8b7e9c3f Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 14 五月 2020 16:58:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 221 +++++++++++++++++++++++++++++-------------------------
1 files changed, 119 insertions(+), 102 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 00ebf73..38dc60c 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
@@ -43,6 +43,7 @@
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.order.CommonOrder;
+import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
@@ -178,7 +179,7 @@
@Resource(name = "producer")
private Producer producer;
-
+
@Resource
private UserInviteService userInviteService;
@@ -227,34 +228,33 @@
return userSystemCouponMapper.countUserCouponList(uid);
}
-
-
@Override
- @Transactional(rollbackFor=Exception.class)
- public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify) throws UserSystemCouponException, Exception{
+ @Transactional(rollbackFor = Exception.class)
+ public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify)
+ throws UserSystemCouponException, Exception {
if (typeEnum == null || uid == null || StringUtil.isNullOrEmpty(source) || num < 1) {
throw new UserSystemCouponException(1, "鍙傛暟涓嶆纭�");
}
-
+
SystemCoupon coupon = systemCouponService.getCouponByType(typeEnum.name());
if (coupon == null) {
throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘");
}
-
+
// 婵�娲荤姸鎬�
int stateActivated = 0;
// 鑷喘鍏嶅崟鍒搞�佽禒閫佸厤鍗曞埜鍙洿鎺ヤ娇鐢�
if (coupon.getType() == CouponTypeEnum.freeCouponBuy || coupon.getType() == CouponTypeEnum.freeCouponGive) {
stateActivated = 1;
}
-
+
// 鏈夋晥鏃堕暱
Integer expiryDay = null;
if (stateActivated == 0)
expiryDay = coupon.getActivateDay();
if (expiryDay == null || expiryDay == 0)
expiryDay = coupon.getExpiryDay();
-
+
// 璁$畻缁撴潫鏃ユ湡
Date nowTime = new Date();
String endDay = DateUtil.plusDay(expiryDay - 1, nowTime);
@@ -263,10 +263,10 @@
endDay += " 23:59:59";
}
Date endTime = format.parse(endDay);
-
+
UserSystemCoupon userSystemCoupon = null;
- for (int i = 0; i < num; i ++) {
- UserSystemCoupon userCoupon = new UserSystemCoupon();
+ for (int i = 0; i < num; i++) {
+ UserSystemCoupon userCoupon = new UserSystemCoupon();
userCoupon.setUid(uid);
userCoupon.setSource(source);
userCoupon.setSystemCoupon(coupon);
@@ -281,28 +281,28 @@
if (typeEnum == CouponTypeEnum.freeCoupon) {
userSystemCouponActivateService.addActivateRecord(userCoupon.getId());
}
-
+
if (num == 1) {
userSystemCoupon = userCoupon;
- }
- }
-
+ }
+ }
+
executor.execute(new Runnable() {
@Override
- public void run() {
+ public void run() {
if (notify) { // 娑堟伅鎺ㄩ��
try {
- userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source,
- num, "鎴愬姛鑾峰緱", nowTime, endTime);
+ userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source, num, "鎴愬姛鑾峰緱",
+ nowTime, endTime);
} catch (Exception e) {
- e.printStackTrace();
+ e.printStackTrace();
}
}
-
+
// 绂忓埄涓績绾㈢偣
UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
if (extra != null) {
- UserInfoExtra updateExtra = new UserInfoExtra();
+ UserInfoExtra updateExtra = new UserInfoExtra();
updateExtra.setId(extra.getId());
if (extra.getCouponNews() == null) {
updateExtra.setCouponNews(1);
@@ -313,26 +313,24 @@
}
}
});
-
- return userSystemCoupon;
+
+ return userSystemCoupon;
}
-
-
@Override
- @Transactional(rollbackFor=Exception.class)
- public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify,
- BigDecimal percent) throws UserSystemCouponException, Exception{
- if (uid == null || percent == null|| StringUtil.isNullOrEmpty(source) || num < 1) {
+ @Transactional(rollbackFor = Exception.class)
+ public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify, BigDecimal percent)
+ throws UserSystemCouponException, Exception {
+ if (uid == null || percent == null || StringUtil.isNullOrEmpty(source) || num < 1) {
throw new UserSystemCouponException(1, "鍙傛暟涓嶆纭�");
}
-
+
String name = CouponTypeEnum.rebatePercentCoupon.name();
SystemCoupon coupon = systemCouponService.getCouponByTypeAndPercent(name, percent);
if (coupon == null) {
throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘");
}
-
+
// 璁$畻缁撴潫鏃ユ湡
Date nowTime = new Date();
Integer expiryDay = coupon.getExpiryDay();
@@ -342,10 +340,10 @@
endDay += " 23:59:59";
}
Date endTime = format.parse(endDay);
-
+
UserSystemCoupon userSystemCoupon = null;
- for (int i = 0; i < num; i ++) {
- UserSystemCoupon userCoupon = new UserSystemCoupon();
+ for (int i = 0; i < num; i++) {
+ UserSystemCoupon userCoupon = new UserSystemCoupon();
userCoupon.setUid(uid);
userCoupon.setSource(source);
userCoupon.setSystemCoupon(coupon);
@@ -358,24 +356,24 @@
userSystemCouponMapper.insertSelective(userCoupon);
if (num == 1) {
userSystemCoupon = userCoupon;
- }
- }
-
+ }
+ }
+
executor.execute(new Runnable() {
@Override
- public void run() {
+ public void run() {
if (notify) { // 娑堟伅鎺ㄩ��
try {
userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, num, "鎴愬姛鑾峰緱", nowTime, endTime);
} catch (Exception e) {
- e.printStackTrace();
+ e.printStackTrace();
}
}
-
+
// 绂忓埄涓績绾㈢偣
UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
if (extra != null) {
- UserInfoExtra updateExtra = new UserInfoExtra();
+ UserInfoExtra updateExtra = new UserInfoExtra();
updateExtra.setId(extra.getId());
if (extra.getCouponNews() == null) {
updateExtra.setCouponNews(1);
@@ -386,15 +384,11 @@
}
}
});
-
- return userSystemCoupon;
- }
-
-
-
-
- @Transactional(rollbackFor=Exception.class)
+ return userSystemCoupon;
+ }
+
+ @Transactional(rollbackFor = Exception.class)
@Override
public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid, boolean changeJump)
throws UserSystemCouponException, Exception {
@@ -660,7 +654,7 @@
return hasCoupon;
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
@@ -683,7 +677,7 @@
return getEnableListByCouponId(uid, 1, couponList);
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public List<UserSystemCouponVO> getGoodsCouponList(Long uid, Long auctionId)
throws UserSystemCouponException, Exception {
@@ -751,8 +745,7 @@
return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
}
-
-
+
@Override
public long countGiveFreeCoupon(Long uid) {
if (uid == null)
@@ -769,8 +762,6 @@
return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
}
-
-
@Override
public long countUsableRewardCoupon(Long uid) {
@@ -914,26 +905,25 @@
}
}
}
-
+
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)
+ 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)
+ if (thirdCreateTime == null || accountTime == null)
throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜");
-
+
long downOrderTime = thirdCreateTime.getTime();
long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
if (downOrderTime > limitDate) {
@@ -956,12 +946,13 @@
valid = true;
}
}
-
+
if (!valid)
throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜");
}
BigDecimal hongBao = orderVO.getHongBao();
+
// 绾㈠寘鐘舵��
Integer hongBaoState = orderVO.getHongBaoState();
// 绾㈠寘绫诲瀷
@@ -974,6 +965,11 @@
if (order == null)
throw new UserSystemCouponException(1, "璇ヨ鍗曚笉瀛樺湪");
+ // 浣跨敤濂栧姳鍒� 閲戦棰濋檺鍒�
+ if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0){
+ throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜");
+ }
+
/* 濂栭噾璁$畻 浠ュ強鐩稿叧绾㈠寘淇℃伅澶勭悊 */
// 杞崲鎴愬皬鏁扮偣
@@ -983,7 +979,7 @@
UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(),
sourceType, systemCoupon.getType().name());
-
+
if (Constant.IS_TEST) {
useRewardCouponCore(userSystemCoupon, money, hongBao, uid, order);
} else { // 浜嬪姟娑堟伅
@@ -1009,7 +1005,7 @@
}
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void useRewardCouponCore(UserSystemCoupon userSystemCoupon, BigDecimal money, BigDecimal hongBao, Long uid,
Order order) throws Exception {
org.springframework.transaction.TransactionStatus transactionStatus = transactionManager
@@ -1032,9 +1028,19 @@
// 2.鎻掑叆鍏宠仈
orderHongBaoMapService.addOrderHongBaoMap(hongBaoV2, order);
+ // 璁$畻璇ヨ鍗曞師鏈夎繑鍒�
+ List<HongBaoOrder> hongBaoOrderlist = hongBaoOrderService
+ .listDetailByOrderIdAndSourceType(order.getOrderId(), order.getOrderType());
+ BigDecimal originalMoney = new BigDecimal(0);
+ if (hongBaoOrderlist != null)
+ for (HongBaoOrder ho : hongBaoOrderlist) {
+ if (ho.getHongBaoV2() != null && ho.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU)
+ originalMoney = originalMoney.add(ho.getHongBaoV2().getMoney());
+ }
+
// 3.鎻掑叆璧勯噾鏄庣粏,鐢ㄦ埛浣欓
UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(order.getOrderId(),
- order.getOrderType(), money, new UserInfo(uid));
+ order.getOrderType(), money, originalMoney, new UserInfo(uid));
userMoneyDetailService.addUserMoneyDetail(userMoneyDetail);
userInfoService.addMoney(new UserInfo(uid), money);
@@ -1060,7 +1066,22 @@
couponRecord.setUpdateTime(date);
userSystemCouponRecordService.insertSelective(couponRecord);
- // 娑堟伅鎺ㄩ��
+ int goodsCount = 0;
+ String orderId = order.getOrderId();
+ Integer orderType = order.getOrderType();
+ List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(orderType, orderId);
+ if (orderList != null && orderList.size() > 0) {
+ for (CommonOrder co : orderList) {
+ goodsCount += co.getCount();
+ }
+ }
+
+ // 璧勯噾娑堟伅
+ UserInfo userInfo = userInfoService.selectByPKey(uid);
+ userMoneyMsgNotificationService.rewardCounponReceived(uid, orderId, orderType, goodsCount,
+ money, userInfo.getMyHongBao(), order.getThirdCreateTime());
+
+ // 鍒镐娇鐢ㄦ垚鍔熸秷鎭�
try {
userOtherMsgNotificationService.rewardCouponEndMsg(uid, userSystemCoupon.getSource(), 1, "浣跨敤鎴愬姛");
} catch (Exception e) {
@@ -1357,8 +1378,7 @@
return userRecordVO;
}
-
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public void updateStateByDrawback(String orderNo) throws Exception {
@@ -1380,7 +1400,7 @@
sendBackCoupon(record.getUserSystemCoupon(), record);
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public void updateStateByArrivalAccount(String orderNo) throws Exception {
@@ -1398,14 +1418,13 @@
record.setState(UserSystemCouponRecord.STATE_SUCCESS);
userSystemCouponRecordService.updateByPrimaryKeySelective(record);
}
-
-
+
@Override
public List<UserSystemCoupon> getCounponNowInvalid(int count) {
return userSystemCouponMapper.getCounponNowInvalid(count);
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId)
throws Exception {
@@ -1475,8 +1494,6 @@
return isfree;
}
-
-
/**
* 闅忔満鍒告瘮渚�
*
@@ -1531,7 +1548,7 @@
}
@Override
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
public void exchangeCoupon(Long uid, String couponType, String source, BigDecimal percent)
throws UserSystemCouponException, Exception {
if (couponType == null || uid == null) {
@@ -1553,7 +1570,7 @@
if (couponType == CouponTypeEnum.freeCoupon.name()) {
stateActivated = 0; //
} else if (couponType == CouponTypeEnum.welfareFreeCoupon.name()
- && threeSaleSerivce.countSuccessFirstTeam(uid) <= 0) {
+ && threeSaleSerivce.countFirstTeam(uid) <= 0) {
stateActivated = 0; // 鏃犱笅绾ч槦鍛� --寰呮縺娲�
}
@@ -1587,7 +1604,7 @@
insertSelective(userCoupon);
}
- @Transactional(rollbackFor=Exception.class)
+ @Transactional(rollbackFor = Exception.class)
@Override
public List<UserSystemCouponVO> getCouponList(AcceptData acceptData, long start, int count, Long uid)
throws UserSystemCouponException, Exception {
@@ -2014,16 +2031,17 @@
continue;
}
-
try { // 娑堟伅鎺ㄩ��
Long uid = userCoupon.getUid();
String source = userCoupon.getSource();
- if (baseCoupon.getType() == CouponTypeEnum.freeCoupon || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
- userOtherMsgNotificationService.freeCouponEndMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "宸茶繃鏈�");
- } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) {
- userOtherMsgNotificationService.freeCouponEndMsg(uid, "璧犻�佸厤鍗曞埜", source, 1, "宸茶繃鏈�");
- } if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
- userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "宸茶繃鏈�");
+ if (baseCoupon.getType() == CouponTypeEnum.freeCoupon
+ || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
+ userOtherMsgNotificationService.freeCouponEndMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "宸茶繃鏈�");
+ } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) {
+ userOtherMsgNotificationService.freeCouponEndMsg(uid, "璧犻�佸厤鍗曞埜", source, 1, "宸茶繃鏈�");
+ }
+ if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
+ userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "宸茶繃鏈�");
}
} catch (Exception e) {
e.printStackTrace();
@@ -2068,7 +2086,7 @@
Long uid = userCoupon.getUid();
String source = userCoupon.getSource();
Date startTime = userCoupon.getStartTime();
- if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())
+ if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())
|| CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) {
userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "浣跨敤閫�鍥�", startTime, endTime);
}
@@ -2197,11 +2215,11 @@
String source = userCoupon.getSource();
CouponTypeEnum type = systemCoupon.getType();
if (CouponTypeEnum.freeCouponGive == type) {
- userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�",
+ userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�",
userCoupon.getStartTime(), userCoupon.getEndTime());
} else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
- userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�",
- userCoupon.getStartTime(), userCoupon.getEndTime());
+ userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(),
+ userCoupon.getEndTime());
}
}
@@ -2272,11 +2290,11 @@
String source = userCoupon.getSource();
CouponTypeEnum type = systemCoupon.getType();
if (CouponTypeEnum.freeCouponGive == type) {
- userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�",
+ userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�",
userCoupon.getStartTime(), userCoupon.getEndTime());
} else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
- userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�",
- userCoupon.getStartTime(), userCoupon.getEndTime());
+ userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(),
+ userCoupon.getEndTime());
}
}
}
@@ -2285,13 +2303,13 @@
public boolean getValidRebateCoupon(Long uid) {
// 杩囨湡鍒�
updateInvalidSate(uid);
-
- List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
+
+ List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid,
+ CouponTypeEnum.rebatePercentCoupon.name());
if (listCoupon == null || listCoupon.size() == 0)
return false;
return true;
}
-
@Override
public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception {
@@ -2301,8 +2319,8 @@
// 閫�鍥炲埜
sendBackTimeOutCoupon(uid);
-
- List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
+ List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid,
+ CouponTypeEnum.rebatePercentCoupon.name());
if (listCoupon == null || listCoupon.size() == 0)
return null;
@@ -2466,8 +2484,7 @@
public void run() {
Long uid = coupon.getUid();
String source = coupon.getSource();
- userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1,
- "婵�娲绘垚鍔�", nowDate, endTime);
+ userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "婵�娲绘垚鍔�", nowDate, endTime);
}
});
} catch (Exception e) {
--
Gitblit v1.8.0