From e38ed8ad96af9893ab53bd34f8fd50f7b6b921b0 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期三, 06 三月 2019 10:15:52 +0800 Subject: [PATCH] 使用券是否可以使用加以验证 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 147 insertions(+), 1 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 8c14fc6..d4af745 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 @@ -15,7 +15,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.DateUtil; -import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper; import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord; @@ -28,6 +27,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.push.PushCoupon; import com.yeshi.fanli.entity.system.SystemCoupon; import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -596,6 +596,13 @@ if (userSystemCoupon == null) { throw new UserSystemCouponException(1, "鍒告暟鎹笉姝g‘"); } + + Integer state = userSystemCoupon.getState(); + Integer stateActivated = userSystemCoupon.getStateActivated(); + if (UserSystemCoupon.STATE_CAN_USE != state || 1 != stateActivated) { + throw new UserSystemCouponException(1, "璇ュ埜涓嶈兘琚娇鐢�"); + } + Long couponUid = userSystemCoupon.getUid(); if (!uid.equals(couponUid)) { @@ -658,6 +665,12 @@ UserSystemCoupon userSystemCoupon = selectByPrimaryKey(id); if (userSystemCoupon == null) { throw new UserSystemCouponException(1, "鍒镐俊鎭笉瀛樺湪"); + } + + Integer state = userSystemCoupon.getState(); + Integer stateActivated = userSystemCoupon.getStateActivated(); + if (UserSystemCoupon.STATE_CAN_USE != state || 1 != stateActivated) { + throw new UserSystemCouponException(1, "璇ュ埜涓嶈兘琚娇鐢�"); } // 绯荤粺鍒镐俊鎭� @@ -1040,6 +1053,7 @@ return userRecordVO; } + @Transactional @Override public void activatedWelfareFreeCoupon(Long uid, String fromNickName) { @@ -1367,6 +1381,8 @@ // 鑾峰彇棰濆淇℃伅 UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + + // 宸茬粡鎶借繃濂栫殑鎴栬�呭凡缁忚繘鍏ヨ繃鎶藉椤甸潰鐨� if (userInfoExtra != null && userInfoExtra.getLotteryNewbies() != null) { return; } @@ -1458,5 +1474,135 @@ userInfoExtraService.saveUserInfoExtra(userInfoExtra); } + + @Override + @Transactional + public void randomRewardCoupon(PushCoupon pushCoupon, Long uid) throws Exception { + int coupon = 0; + + Integer amount = pushCoupon.getAmount(); + for (int i = 0; i < amount; i++) { + + BigDecimal percent = pushCoupon.getPercent(); + if (percent == null) { + // 杩斿埄姣�-闅忔満 + percent = new BigDecimal(randomNum()); + } + + // 鏌ヨ濂栧姳鍒� + SystemCoupon systemCoupon = systemCouponService.getCouponByTypeAndPercent( + CouponTypeEnum.rebatePercentCoupon.name(),percent); + + if (systemCoupon == null) { + return; + } + + UserSystemCoupon userCoupon = new UserSystemCoupon(); + userCoupon.setUid(uid); + userCoupon.setSource(UserSystemCoupon.SOURCE_SYSTEM_PUSH); + userCoupon.setSystemCoupon(systemCoupon); + userCoupon.setState(UserSystemCoupon.STATE_CAN_USE); + userCoupon.setStateActivated(1); + userCoupon.setStartTime(pushCoupon.getStartTime()); + userCoupon.setEndTime(pushCoupon.getEndTime()); + 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()); + } + + } catch(Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + // 鑾峰彇棰濆淇℃伅 + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + if (userInfoExtra == null) { + return; + } + + Integer couponNews = userInfoExtra.getCouponNews(); + if (couponNews == null) { + userInfoExtra.setCouponNews(coupon); + } else { + userInfoExtra.setCouponNews(couponNews + coupon); + } + userInfoExtraService.saveUserInfoExtra(userInfoExtra); + } + + /** + * 闅忔満鍒告瘮渚� + * @return + */ + public int randomNum() { + + 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)); + + int minRange = 0; + int maxRange = 0; + int randomNum = (int) (1 + Math.round(Math.random() * (99))); + + for (int i = 0; i < list.size(); i++) { + + RandomProportion proportion = list.get(i); + int probability = proportion.probability; + + 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))); + break; + } + } + + return result; + } + + class RandomProportion { + public int minNum;// 鏈�灏� + public int maxNum;// 鏈�澶� + public int probability; // 姒傜巼 + + RandomProportion () {} + + RandomProportion (int minNum, int maxNum, int probability) { + this.minNum = minNum; + this.maxNum = maxNum; + this.probability = probability; + } + } } -- Gitblit v1.8.0