| | |
| | | import com.yeshi.fanli.entity.system.SystemCoupon;
|
| | | import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.exception.user.UserInfoExtraException;
|
| | | import com.yeshi.fanli.exception.user.UserSystemCouponException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
|
| | |
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.TokenUtil;
|
| | | import com.yeshi.fanli.util.VersionUtil;
|
| | | import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
|
| | |
| | | @Resource
|
| | | private UserOtherMsgNotificationService userOtherMsgNotificationService;
|
| | |
|
| | | @Lazy
|
| | | @Resource
|
| | | private CommonOrderCountService commonOrderCountService;
|
| | |
|
| | |
| | |
|
| | | @Resource(name = "producer")
|
| | | private Producer producer;
|
| | |
|
| | | |
| | | @Resource
|
| | | private UserVIPInfoService userVIPInfoService;
|
| | |
|
| | |
| | | } else {
|
| | | coupon = systemCouponService.getCouponByTypeAndPercent(couponType, percent);
|
| | | }
|
| | | } else if (couponType.equals(CouponTypeEnum.freeCouponGive.name())) {
|
| | | coupon = systemCouponService.getCouponByType(couponType);
|
| | | }
|
| | |
|
| | | if (coupon == null) {
|
| | |
| | |
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | // 添加一条消息
|
| | | if (userInfoExtra != null) {
|
| | | if (userInfoExtra.getCouponNews() == null) {
|
| | | userInfoExtra.setCouponNews(1);
|
| | | public void run() { // 福利中心红点
|
| | | UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (extra != null) {
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | updateExtra.setId(extra.getId());
|
| | | if (extra.getCouponNews() == null) {
|
| | | updateExtra.setCouponNews(1);
|
| | | } else {
|
| | | userInfoExtra.setCouponNews(userInfoExtra.getCouponNews() + 1);
|
| | | updateExtra.setCouponNews(extra.getCouponNews() + 1);
|
| | | }
|
| | |
|
| | | try {
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | } catch (UserInfoExtraException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | userInfoExtraService.updateByPrimaryKeySelective(updateExtra);
|
| | | }
|
| | |
|
| | | }
|
| | | });
|
| | |
|
| | |
| | |
|
| | | return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public long countGiveFreeCoupon(Long uid) {
|
| | | if (uid == null)
|
| | | return 0;
|
| | |
|
| | | List<SystemCoupon> couponList = systemCouponService.getGiveFreeCouponList();
|
| | | if (couponList == null || couponList.size() == 0)
|
| | | return 0;
|
| | |
|
| | | List<Long> listCouponId = new ArrayList<Long>();
|
| | | for (SystemCoupon systemCoupon : couponList) {
|
| | | listCouponId.add(systemCoupon.getId());
|
| | | }
|
| | |
|
| | | return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
|
| | | }
|
| | |
|
| | | |
| | |
|
| | | @Override
|
| | | public long countUsableRewardCoupon(Long uid) {
|
| | |
| | | return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void useGoodsCoupon(Long uid, Long id, Long goodId, Integer sourceType)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
| | |
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void useOrderCoupon(Long uid, Long id, String orderNo, Integer sourceType, AcceptData acceptData)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
| | | throw new UserSystemCouponException(1, "亲,很遗憾,售后维权订单不能使用返利奖励券~");
|
| | | }
|
| | |
|
| | | |
| | | // 订单
|
| | | CommonOrderVO orderVO = commonOrderService.getCommonOrderByOrderNo(uid, orderNo, CommonOrder.STATE_JS,
|
| | | sourceType);
|
| | | if (orderVO == null)
|
| | | throw new UserSystemCouponException(1, "订单信息获取失败");
|
| | |
|
| | | // 版本区分:2.0.2
|
| | | 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
|
| | | if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | boolean valid = false;
|
| | | Date thirdCreateTime = orderVO.getThirdCreateTime();
|
| | | if (thirdCreateTime != null) {
|
| | | Date accountTime = orderVO.getAccountTime();
|
| | | if (thirdCreateTime != null && accountTime != null) {
|
| | | long downOrderTime = thirdCreateTime.getTime();
|
| | | long limitDate = Long.parseLong("1573315200000"); // TODO
|
| | | // 日期待确定2019-11-10
|
| | | long limitDate = TimeUtil.parse(Constant.COUPON_REWARD_TIME).getTime();
|
| | | if (downOrderTime > limitDate) {
|
| | | Date endDay = DateUtil.plusDayDate(4, thirdCreateTime);
|
| | | Date endDay = DateUtil.plusDayDate(Constant.COUPON_REWARD_LIMIT_DAY, accountTime);
|
| | | long currentTime = java.lang.System.currentTimeMillis();
|
| | | if (endDay.getTime() > currentTime) {
|
| | | boolean valid = false;
|
| | | DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
|
| | | if (dateInfo != null) {
|
| | | if (dateInfo.getDay() > 0)
|
| | |
| | | if (!valid && dateInfo.getMinute() > 0)
|
| | | valid = true;
|
| | |
|
| | | if (!valid && dateInfo.getSecond() >= 0)
|
| | | if (!valid && dateInfo.getSecond() > 0)
|
| | | valid = true;
|
| | | }
|
| | |
|
| | | if (!valid)
|
| | | throw new UserSystemCouponException(1, "该订单已不能使用使用奖励券,详情请咨询客服");
|
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | |
| | | if (!valid)
|
| | | throw new UserSystemCouponException(1, "该订单不能使用奖励券");
|
| | | }
|
| | |
|
| | | BigDecimal hongBao = orderVO.getHongBao();
|
| | |
| | | if (userInfoExtra == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | UserInfoExtra extra = new UserInfoExtra();
|
| | | extra.setId(userInfoExtra.getId());
|
| | | Integer couponNews = userInfoExtra.getCouponNews();
|
| | | if (couponNews == null) {
|
| | | userInfoExtra.setCouponNews(num);
|
| | | extra.setCouponNews(num);
|
| | | } else {
|
| | | userInfoExtra.setCouponNews(couponNews + num);
|
| | | extra.setCouponNews(couponNews + num);
|
| | | }
|
| | | userInfoExtraService.saveUserInfoExtra(userInfoExtra);
|
| | | userInfoExtraService.saveUserInfoExtra(extra);
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | return listVO;
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public UserSystemCouponVO giveCoupon(Long uid, Long id) throws UserSystemCouponException {
|
| | | UserSystemCoupon userSystemCoupon = userSystemCouponMapper.selectByPrimaryKey(id);
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public boolean getIncludeExchange(Long uid) {
|
| | | public boolean getValidRebateCoupon(Long uid) {
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | |
|
| | | String percent = configService.get("exchange_rebate_percent");
|
| | | if (StringUtil.isNullOrEmpty(percent))
|
| | | percent = "35";
|
| | | List<UserSystemCoupon> listCoupon = userSystemCouponMapper.getIncludeExchange(uid, Integer.parseInt(percent),
|
| | | CouponTypeEnum.rebatePercentCoupon.name());
|
| | | |
| | | List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
|
| | | if (listCoupon == null || listCoupon.size() == 0)
|
| | | return false;
|
| | | return true;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public boolean getIncludeNotExchange(Long uid) {
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | |
|
| | | String percent = configService.get("exchange_rebate_percent");
|
| | | if (StringUtil.isNullOrEmpty(percent))
|
| | | percent = "35";
|
| | | List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getIncludeNotExchange(uid,
|
| | | Integer.parseInt(percent), CouponTypeEnum.rebatePercentCoupon.name());
|
| | | if (listCoupon == null || listCoupon.size() == 0)
|
| | | return false;
|
| | | return true;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception {
|
| | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | String percent = configService.get("exchange_rebate_percent");
|
| | | if (StringUtil.isNullOrEmpty(percent))
|
| | | percent = "35";
|
| | |
|
| | | List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getIncludeNotExchange(uid,
|
| | | Integer.parseInt(percent), CouponTypeEnum.rebatePercentCoupon.name());
|
| | | List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
|
| | | if (listCoupon == null || listCoupon.size() == 0)
|
| | | return null;
|
| | |
|