From cdcbed9af813b2a02cdc01eefa24db8bec6b51a9 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期三, 27 三月 2019 12:17:33 +0800 Subject: [PATCH] 主分类 + 子分类 DAO改造 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 214 insertions(+), 3 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 71328cf..d20e351 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,6 +27,8 @@ 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; @@ -45,6 +47,8 @@ import com.yeshi.fanli.service.inter.order.HongBaoOrderService; import com.yeshi.fanli.service.inter.order.OrderHongBaoMapService; import com.yeshi.fanli.service.inter.order.OrderService; +import com.yeshi.fanli.service.inter.push.PushCouponRecordService; +import com.yeshi.fanli.service.inter.push.PushCouponService; import com.yeshi.fanli.service.inter.user.DeviceLotteryRecordService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; @@ -126,6 +130,13 @@ @Resource private CommonOrderCountService commonOrderCountService; + @Resource + private PushCouponService pushCouponService; + + @Resource + private PushCouponRecordService pushCouponRecordService; + + @Override public int insertSelective(UserSystemCoupon record) { return userSystemCouponMapper.insertSelective(record); @@ -170,7 +181,15 @@ 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())) { + // 濂栧姳鍒�10% + coupon = systemCouponService.getCouponByTypeAndPercent(couponType,new BigDecimal(10)); + } + if (coupon == null) { throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘"); } @@ -510,6 +529,7 @@ @Transactional @Override public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception { + if (uid == null) { throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�"); } @@ -519,7 +539,7 @@ // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); // 娲诲姩棰嗗彇鍒� - receivedCoupon(uid); +// receivedCoupon(uid); // 璁㈠崟鐩稿叧鐨勫埜 List<SystemCoupon> couponList = systemCouponService.getOrderCouponList(); @@ -549,7 +569,7 @@ sendBackTimeOutCoupon(uid); // 娲诲姩棰嗗彇鍒� - receivedCoupon(uid); +// receivedCoupon(uid); // 鍟嗗搧鐩稿叧鐨勫埜 List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList(); @@ -1485,5 +1505,196 @@ } + @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; + + 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