| | |
| | | package com.yeshi.fanli.service.impl.user;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.text.ParseException;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | |
| | | import com.yeshi.fanli.entity.system.SystemCoupon;
|
| | | import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
|
| | | 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.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.config.SystemCouponService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
|
| | | import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMapService;
|
| | |
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | | |
| | | @Resource
|
| | | private UserOtherMsgNotificationService userOtherMsgNotificationService;
|
| | | |
| | |
|
| | | // 券失效图片
|
| | | public final static String PIC_INVALID = "http://192.168.1.200/icon/mian_invalid.png";
|
| | |
| | | userCoupon.setUpdateTime(new Date());
|
| | | // 插入数据库
|
| | | insertSelective(userCoupon);
|
| | | |
| | | |
| | | // 消息推送
|
| | | try {
|
| | | if (coupon.getType() != CouponTypeEnum.welfareFreeCoupon) {
|
| | | userOtherMsgNotificationService.welfareCouponGet(userCoupon);
|
| | | } else if (coupon.getType() != CouponTypeEnum.freeCoupon) {
|
| | | userOtherMsgNotificationService.freeSheetCouponGet(userCoupon);
|
| | | } else if (coupon.getType() != CouponTypeEnum.rebatePercentCoupon) {
|
| | | userOtherMsgNotificationService.rewardCouponGet(userCoupon);
|
| | | }
|
| | | |
| | | } catch(Exception e) {
|
| | | try {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | } catch (Exception e1) {
|
| | | e1.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | |
| | | if (uid == null) {
|
| | | return null;
|
| | | }
|
| | | |
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackCoupon(uid);
|
| | |
|
| | | List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid);
|
| | | if (listVO == null || listVO.size() == 0) {
|
| | |
| | | if (uid == null) {
|
| | | throw new UserSystemCouponException(1, "用户未登录");
|
| | | }
|
| | | |
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackCoupon(uid);
|
| | | |
| | | // 订单相关的券
|
| | | List<SystemCoupon> couponList = systemCouponService.getOrderCouponList();
|
| | | if (couponList == null || couponList.size() == 0) {
|
| | |
| | | if (uid == null) {
|
| | | throw new UserSystemCouponException(1, "用户未登录");
|
| | | }
|
| | | |
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackCoupon(uid);
|
| | | |
| | | // 商品相关的券
|
| | | List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
|
| | | if (couponList == null || couponList.size() == 0) {
|
| | |
| | | couponRecord.setCreateTime(date);
|
| | | couponRecord.setUpdateTime(date);
|
| | | userSystemCouponRecordService.insertSelective(couponRecord);
|
| | | |
| | | // 消息推送
|
| | | try {
|
| | | if (baseCoupon.getType() != CouponTypeEnum.welfareFreeCoupon) {
|
| | | userOtherMsgNotificationService.welfareCouponUsing(userSystemCoupon);
|
| | | } else if (baseCoupon.getType() != CouponTypeEnum.freeCoupon) {
|
| | | userOtherMsgNotificationService.freeSheetCouponUsing(userSystemCoupon);
|
| | | }
|
| | | |
| | | } catch(Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | | }
|
| | |
|
| | | @Transactional
|
| | |
| | | couponRecord.setCreateTime(date);
|
| | | couponRecord.setUpdateTime(date);
|
| | | userSystemCouponRecordService.insertSelective(couponRecord);
|
| | | |
| | | // 消息推送
|
| | | try {
|
| | | userOtherMsgNotificationService.rewardCouponUsed(userSystemCoupon);
|
| | | } catch(Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | return userRecordVO;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void updateCounponInvalid(Long uid) {
|
| | | List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalid(uid);
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | |
| | | for (UserSystemCoupon userSystemCoupon: list) {
|
| | | // 更新券已过期
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_OVERDUE);
|
| | | userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
|
| | | |
| | | SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
|
| | | if (systemCoupon == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | if (baseCoupon == null || baseCoupon.getId() == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | // 消息推送
|
| | | try {
|
| | | if (baseCoupon.getType() != CouponTypeEnum.welfareFreeCoupon) {
|
| | | userOtherMsgNotificationService.welfareCouponAlreadyOutOfDate(userSystemCoupon);
|
| | | } else if (baseCoupon.getType() != CouponTypeEnum.freeCoupon) {
|
| | | userOtherMsgNotificationService.freeSheetCouponAlreadyOutOfDate(userSystemCoupon);
|
| | | } else if (baseCoupon.getType() != CouponTypeEnum.rebatePercentCoupon) {
|
| | | userOtherMsgNotificationService.rewardCouponAlreadyOutOfDate(userSystemCoupon);
|
| | | }
|
| | | |
| | | } catch(Exception e) {
|
| | | try {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | } catch (Exception e1) {
|
| | | e1.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | @Override
|
| | | public void sendBackCoupon(Long uid) {
|
| | | // 超过120秒 未被匹配的券
|
| | | List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 120);
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | |
| | | for (UserSystemCouponRecord couponRecord: list) {
|
| | | // 更新状态:匹配超时
|
| | | couponRecord.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
|
| | | couponRecord.setUpdateTime(new Date());
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord);
|
| | | |
| | | UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon();
|
| | | // 状态初始化
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUseTime(null);
|
| | | |
| | | int expiryDay = 15;
|
| | | |
| | | SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
|
| | | SystemCoupon coupon= systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | if (coupon != null) {
|
| | | expiryDay = coupon.getExpiryDay();
|
| | | } |
| | | |
| | | // 结束日期
|
| | | Date endTime = null;
|
| | | try {
|
| | | String endDay = DateUtil.plusDay(expiryDay, new Date());
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
| | | endTime = format.parse(endDay);
|
| | | } catch (ParseException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | |
| | | // 有效期时间重新定义
|
| | | userSystemCoupon.setStartTime(new Date());
|
| | | userSystemCoupon.setEndTime(endTime);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | | userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
|
| | | }
|
| | | |
| | | }
|
| | | |
| | | |
| | |
|
| | |
|
| | | }
|