From 349fe3ad7dc7295729f5ef98aabd7c3c68a90ce6 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 27 六月 2019 17:49:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 238 ++++++++++++++++++++++-------------------------------------
1 files changed, 88 insertions(+), 150 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 e71d99f..9fe5b0c 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,8 +27,6 @@
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.push.PushCoupon;
-import com.yeshi.fanli.entity.push.PushCouponRecord;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -166,7 +164,12 @@
public List<UserSystemCoupon> getUserCouponBySource(Long uid, String source) {
return userSystemCouponMapper.getUserCouponBySource(uid, source);
}
-
+
+ @Override
+ public int countTodatyUserCouponBySource(Long uid, String source) {
+ return userSystemCouponMapper.countTodatyUserCouponBySource(uid, source);
+ }
+
@Override
public long countUserCouponList(Long uid) {
return userSystemCouponMapper.countUserCouponList(uid);
@@ -181,7 +184,16 @@
throw new UserSystemCouponException(1, "鍙傛暟涓嶆纭�");
}
- SystemCoupon coupon = systemCouponService.getCouponByType(couponType);
+ SystemCoupon coupon = null;
+ if (couponType.equals(CouponTypeEnum.welfareFreeCoupon.name())) {
+ // 绂忓埄鍏嶅崟鍒�
+ coupon = systemCouponService.getCouponByType(couponType);
+ } else if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
+ // 闅忔満濂栧姳鍒�
+ randomRewardCoupon(1, uid, source);
+ return;
+ }
+
if (coupon == null) {
throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘");
}
@@ -258,7 +270,7 @@
@Transactional
@Override
- public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid)
+ public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid, boolean changeJump)
throws UserSystemCouponException, Exception {
if (uid == null) {
@@ -269,14 +281,14 @@
updateCounponInvalid(uid);
// 閫�鍥炲埜
sendBackTimeOutCoupon(uid);
-
+
List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid);
if (listVO == null || listVO.size() == 0) {
return listVO;
}
// 鏁版嵁缁勭粐
- listDataFactory(listVO, uid);
+ listDataFactory(listVO, uid, changeJump);
return listVO;
}
@@ -286,8 +298,14 @@
*
* @param listVO
*/
- public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid) throws Exception {
+ public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid, boolean changeJump) throws Exception {
+ String inviteCode = null;
+ UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+ if (userInfoExtra != null) {
+ inviteCode = userInfoExtra.getInviteCode();
+ }
+
for (UserSystemCouponVO userCouponVO : listVO) {
SystemCoupon systemCoupon = userCouponVO.getSystemCoupon();
@@ -323,30 +341,26 @@
// 鏄剧ず瑙勫垯
userCouponVO.setCouponRule(systemCoupon.getRemark());
userCouponVO.setCouponEffect("寰呮縺娲�");
-
// 鐘舵�佹湭婵�娲� -涓旀湭琚娇鐢�
if (UserSystemCoupon.STATE_CAN_USE == state) {
userCouponVO.setState(0);
}
jumpBtn = new HashMap<String, Object>();
-
- // 閭�璇烽槦鍛樼晫闈�
- /*
- * Map<String, Object> jumpLink = new HashMap<String, Object>();
- * UserInfoExtra userInfoExtra =
- * userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra
- * != null && userInfoExtra.getInviteCode() != null &&
- * userInfoExtra.getInviteCode().trim().length() > 0) { //
- * 閭�璇锋縺娲绘垚鍔熺晫闈� jumpLink.put("url",
- * configService.get("invite_activation_success_url") +
- * "?alert=true"); } else { // 婵�娲婚個璇风爜鐣岄潰 jumpLink.put("url",
- * configService.get("invite_activation_url")); }
- * jumpBtn.put("params", jumpLink);
- */
-
- jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite"));
-
+
+ // 绂忓埄鍒搁渶瑕佹縺娲荤晫闈�
+ if (!changeJump) {
+ jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite"));
+ } else {
+ if (inviteCode != null && inviteCode.trim().length() > 0) {
+ // 閭�璇峰ソ鍙嬬晫闈�
+ jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite_friends"));
+ } else {
+ // 閭�璇锋縺娲荤晫闈�
+ jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite_activate"));
+ }
+ }
+
} else if (stateActivated == 1) {
// 鏄剧ず瑙勫垯
userCouponVO.setCouponRule(systemCoupon.getRule());
@@ -521,6 +535,7 @@
@Transactional
@Override
public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
+
if (uid == null) {
throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�");
}
@@ -529,8 +544,6 @@
updateCounponInvalid(uid);
// 閫�鍥炲埜
sendBackTimeOutCoupon(uid);
- // 娲诲姩棰嗗彇鍒�
-// receivedCoupon(uid);
// 璁㈠崟鐩稿叧鐨勫埜
List<SystemCoupon> couponList = systemCouponService.getOrderCouponList();
@@ -559,9 +572,6 @@
// 閫�鍥炲埜
sendBackTimeOutCoupon(uid);
- // 娲诲姩棰嗗彇鍒�
-// receivedCoupon(uid);
-
// 鍟嗗搧鐩稿叧鐨勫埜
List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
if (couponList == null || couponList.size() == 0) {
@@ -1222,8 +1232,8 @@
@Transactional
@Override
public void sendBackTimeOutCoupon(Long uid) {
- // 瓒呰繃120绉� 鏈鍖归厤鐨勫埜
- List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 120L);
+ // 瓒呰繃10鍒嗛挓 鏈鍖归厤鐨勫埜
+ List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid,600L);
if (list == null || list.size() == 0) {
return;
}
@@ -1407,9 +1417,9 @@
return;
}
- // 鏄惁鏈夎繃璁㈠崟锛氳繑鍒┿�佸垎浜鍗�
- boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
- if (hasOrder) {
+ // 鏄惁鏄柊鐢ㄦ埛
+ boolean isNewUser = userInfoExtraService.isNewUser(uid);
+ if (!isNewUser) {
return;
}
@@ -1447,7 +1457,7 @@
UserSystemCoupon userCoupon = new UserSystemCoupon();
userCoupon.setUid(uid);
- userCoupon.setSource(UserSystemCoupon.SOURCE_CHOUJIANG);
+ userCoupon.setSource(UserSystemCoupon.SOURCE_NEWBIES);
userCoupon.setSystemCoupon(systemCoupon);
userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
userCoupon.setStateActivated(stateActivated);
@@ -1496,117 +1506,46 @@
}
- @Override
- @Transactional
- public void receivedCoupon(Long uid) throws Exception {
-
- List<PushCoupon> list = pushCouponService.listQueryEffective();
- if (list == null || list.size() == 0) {
- return;
- }
-
- List<PushCouponRecord> listRecord = pushCouponRecordService.listByUid(uid);
-
- for (PushCoupon pushCoupon: list) {
-
- boolean receive = false;
-
- String uids = pushCoupon.getUids();
- if (uids == null || uids.trim().length() == 0) {
- receive = true;
- } else {
- String[] uidArray = uids.split(",");
-
- if (uidArray != null) {
- for (int i = 0; i < uidArray.length; i++) {
- String str_uid = uidArray[i];
- if (str_uid != null && str_uid.trim().length() > 0) {
- if(str_uid.equals(uid.toString())) {
- receive = true;
- }
- }
- }
- }
- }
-
- if (!receive) {
- continue;
- }
-
- if (listRecord != null && listRecord.size() > 0) {
- for (PushCouponRecord PushCouponRecord: listRecord) {
- PushCoupon pushCoupon2 = PushCouponRecord.getPushCoupon();
-
- if (pushCoupon.getId().equals(pushCoupon2.getId()) ) {
- receive = false;
- break;
- }
- }
- }
-
- if (receive) {
-
- // 鎻掑叆璁板綍
- PushCouponRecord pushCouponRecord = new PushCouponRecord();
- pushCouponRecord.setPushCoupon(pushCoupon);
- pushCouponRecord.setUid(uid);
- pushCouponRecord.setCreateTime(new Date());
- pushCouponRecordService.insertSelective(pushCouponRecord);
-
- // 鎻掑叆鍒�
- randomRewardCoupon(pushCoupon, uid);
- }
- }
- }
@Override
@Transactional
- public void randomRewardCoupon(PushCoupon pushCoupon, Long uid) throws Exception {
- int coupon = 0;
+ public void randomRewardCoupon(int num, Long uid, String source) throws Exception {
+ if (num < 1) {
+ return;
+ }
- Integer amount = pushCoupon.getAmount();
- for (int i = 0; i < amount; i++) {
+ for (int i = 0; i < num; i++) {
- BigDecimal percent = pushCoupon.getPercent();
- if (percent == null) {
- // 杩斿埄姣�-闅忔満
- percent = new BigDecimal(randomNum());
- }
-
+ // 杩斿埄姣�-闅忔満
+ BigDecimal percent = new BigDecimal(randomNum());
// 鏌ヨ濂栧姳鍒�
SystemCoupon systemCoupon = systemCouponService.getCouponByTypeAndPercent(
CouponTypeEnum.rebatePercentCoupon.name(),percent);
-
if (systemCoupon == null) {
return;
}
+ // 缁撴潫鏃ユ湡 浠婂ぉ鍦ㄥ唴 鍑忓幓涓�澶�
+ String endDay = DateUtil.plusDay(systemCoupon.getExpiryDay() - 1, new Date());
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ Date endTime = format.parse(endDay);
+
UserSystemCoupon userCoupon = new UserSystemCoupon();
userCoupon.setUid(uid);
- userCoupon.setSource(UserSystemCoupon.SOURCE_SYSTEM_PUSH);
+ userCoupon.setSource(source);
userCoupon.setSystemCoupon(systemCoupon);
userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
userCoupon.setStateActivated(1);
- userCoupon.setStartTime(pushCoupon.getStartTime());
- userCoupon.setEndTime(pushCoupon.getEndTime());
+ userCoupon.setStartTime(new Date());
+ userCoupon.setEndTime(endTime);
userCoupon.setCreateTime(new Date());
userCoupon.setUpdateTime(new Date());
// 鎻掑叆鏁版嵁搴�
insertSelective(userCoupon);
- // 鍒告暟閲�
- coupon ++;
-
// 娑堟伅鎺ㄩ��
try {
- if (systemCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
- userOtherMsgNotificationService.welfareCouponGet(userCoupon);
- } else if (systemCoupon.getType() == CouponTypeEnum.freeCoupon) {
- userOtherMsgNotificationService.freeSheetCouponGet(userCoupon);
- } else if (systemCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
- userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
- }
-
+ userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
} catch(Exception e) {
try {
LogHelper.errorDetailInfo(e);
@@ -1616,21 +1555,20 @@
}
}
- // 鑾峰彇棰濆淇℃伅
+ // 绂忓埄涓績绾㈢偣
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
if (userInfoExtra == null) {
return;
}
-
Integer couponNews = userInfoExtra.getCouponNews();
if (couponNews == null) {
- userInfoExtra.setCouponNews(coupon);
+ userInfoExtra.setCouponNews(num);
} else {
- userInfoExtra.setCouponNews(couponNews + coupon);
+ userInfoExtra.setCouponNews(couponNews + num);
}
userInfoExtraService.saveUserInfoExtra(userInfoExtra);
}
-
+
/**
* 闅忔満鍒告瘮渚�
* @return
@@ -1640,20 +1578,25 @@
int result = 1;
List<RandomProportion> list = new ArrayList<RandomProportion>();
- list.add(new RandomProportion(1,2,30));
- list.add(new RandomProportion(2,4,25));
- list.add(new RandomProportion(4,6,20));
- list.add(new RandomProportion(6,8,6));
- list.add(new RandomProportion(8,10,6));
- list.add(new RandomProportion(10,20,6));
- list.add(new RandomProportion(20,30,2));
- list.add(new RandomProportion(30,40,2));
- list.add(new RandomProportion(40,50,2));
- list.add(new RandomProportion(50,60,1));
+ list.add(new RandomProportion(1, 22));
+ list.add(new RandomProportion(2, 22));
+ list.add(new RandomProportion(3, 22));
+ list.add(new RandomProportion(4, 22));
+ list.add(new RandomProportion(5, 20));
+ list.add(new RandomProportion(6, 18));
+ list.add(new RandomProportion(7, 16));
+ list.add(new RandomProportion(8, 14));
+ list.add(new RandomProportion(9, 12));
+ list.add(new RandomProportion(10, 10));
+ list.add(new RandomProportion(11, 8));
+ list.add(new RandomProportion(12, 6));
+ list.add(new RandomProportion(13, 4));
+ list.add(new RandomProportion(14, 2));
+ list.add(new RandomProportion(15, 1));
int minRange = 0;
int maxRange = 0;
- int randomNum = (int) (1 + Math.round(Math.random() * (99)));
+ int randomNum = (int) (1 + Math.round(Math.random() * (199)));
for (int i = 0; i < list.size(); i++) {
@@ -1663,11 +1606,8 @@
maxRange = maxRange + probability;
minRange = maxRange - probability;
- if (i == list.size() && randomNum > minRange && randomNum <= maxRange) {
- result = proportion.minNum + (int) (Math.random() * ((proportion.maxNum - proportion.minNum) + 1));
- break;
- } else if(randomNum > minRange && randomNum <= maxRange) {
- result = proportion.minNum + (int) (Math.random() * ((proportion.maxNum - proportion.minNum)));
+ if(randomNum > minRange && randomNum <= maxRange) {
+ result = proportion.num;
break;
}
}
@@ -1676,15 +1616,13 @@
}
class RandomProportion {
- public int minNum;// 鏈�灏�
- public int maxNum;// 鏈�澶�
+ public int num;//鍒稿��
public int probability; // 姒傜巼
RandomProportion () {}
- RandomProportion (int minNum, int maxNum, int probability) {
- this.minNum = minNum;
- this.maxNum = maxNum;
+ RandomProportion (int num, int probability) {
+ this.num = num;
this.probability = probability;
}
}
--
Gitblit v1.8.0