| | |
| | | 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);
|
| | |
| | | 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, "券类型不正确");
|
| | | }
|
| | |
| | |
|
| | | @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) {
|
| | |
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | // 活动领取券
|
| | | receivedCoupon(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;
|
| | | }
|
| | |
| | | *
|
| | | * @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();
|
| | |
| | | // 显示规则
|
| | | 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());
|
| | |
| | | @Transactional
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
|
| | | |
| | | if (uid == null) {
|
| | | throw new UserSystemCouponException(1, "用户未登录");
|
| | | }
|
| | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | | // 活动领取券
|
| | | // receivedCoupon(uid);
|
| | | receivedCoupon(uid);
|
| | |
|
| | | // 订单相关的券
|
| | | List<SystemCoupon> couponList = systemCouponService.getOrderCouponList();
|
| | |
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | // 活动领取券
|
| | | // receivedCoupon(uid);
|
| | | receivedCoupon(uid);
|
| | |
|
| | | // 商品相关的券
|
| | | List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
|
| | |
| | | @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;
|
| | | }
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | // 是否有过订单:返利、分享订单
|
| | | boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
|
| | | if (hasOrder) {
|
| | | // 是否是新用户
|
| | | boolean isNewUser = userInfoExtraService.isNewUser(uid);
|
| | | if (!isNewUser) {
|
| | | return;
|
| | | }
|
| | |
|
| | |
| | |
|
| | | 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);
|
| | |
| | | }
|
| | |
|
| | | if (receive) {
|
| | | |
| | | // 插入记录
|
| | | PushCouponRecord pushCouponRecord = new PushCouponRecord();
|
| | | pushCouponRecord.setPushCoupon(pushCoupon);
|
| | |
| | | pushCouponRecordService.insertSelective(pushCouponRecord);
|
| | |
|
| | | // 插入券
|
| | | randomRewardCoupon(pushCoupon, uid);
|
| | | randomRewardCouponForPush(pushCoupon, uid);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void randomRewardCoupon(PushCoupon pushCoupon, Long uid) throws Exception {
|
| | | public void randomRewardCouponForPush(PushCoupon pushCoupon, Long uid) throws Exception {
|
| | | int coupon = 0;
|
| | |
|
| | | Integer amount = pushCoupon.getAmount();
|
| | |
| | |
|
| | | // 消息推送
|
| | | 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);
|
| | |
| | | }
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | @Transactional
|
| | | public void randomRewardCoupon(int num, Long uid, String source) throws Exception {
|
| | | if (num < 1) {
|
| | | return;
|
| | | }
|
| | |
|
| | | for (int i = 0; i < num; i++) {
|
| | | |
| | | // 返利比-随机
|
| | | 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(source);
|
| | | userCoupon.setSystemCoupon(systemCoupon);
|
| | | userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userCoupon.setStateActivated(1);
|
| | | userCoupon.setStartTime(new Date());
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setCreateTime(new Date());
|
| | | userCoupon.setUpdateTime(new Date());
|
| | | // 插入数据库
|
| | | insertSelective(userCoupon);
|
| | | |
| | | // 消息推送
|
| | | try {
|
| | | 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(num);
|
| | | } else {
|
| | | userInfoExtra.setCouponNews(couponNews + num);
|
| | | }
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | }
|
| | | |
| | | /**
|
| | | * 随机券比例
|
| | | * @return
|