| | |
| | | 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 org.yeshi.utils.DateUtil;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
|
| | | import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
|
| | | import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
| | | import com.yeshi.fanli.entity.bus.user.Order;
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | throw new UserSystemCouponException(1, "用户未登录");
|
| | | }
|
| | |
|
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | throw new UserSystemCouponException(1, "商品ID为空");
|
| | | }
|
| | |
|
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | // 验证是否失效
|
| | | updateCounponInvalid(uid);
|
| | |
|
| | | // 待活福利免单券
|
| | | List<UserSystemCoupon> list = userSystemCouponMapper.getCouponByTypeAndNotActivated(uid, systemCoupon.getId());
|
| | | if (list == null || list.size() == 0) {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public void updateCounponInvalid(Long uid) {
|
| | | List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalid(uid);
|
| | | public List<UserSystemCoupon> getCounponNowInvalid(int count) {
|
| | | return userSystemCouponMapper.getCounponNowInvalid(count);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | public void updateCounponInvalid(List<UserSystemCoupon> list) {
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | |
|
| | | for (UserSystemCoupon userSystemCoupon : list) {
|
| | | // 更新券已过期
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUpdateTime(new Date());
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_OVERDUE);
|
| | | userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
|
| | |
|
| | | SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
|
| | | if (systemCoupon == null) {
|
| | | SystemCoupon baseCoupon = userSystemCoupon.getSystemCoupon();
|
| | | if (baseCoupon == null) {
|
| | | continue;
|
| | | }
|
| | |
|
| | | SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | |
| | | baseCoupon = systemCouponService.selectByPrimaryKey(baseCoupon.getId());
|
| | | if (baseCoupon == null || baseCoupon.getId() == null) {
|
| | | continue;
|
| | | }
|
| | |
| | | userOtherMsgNotificationService.freeSheetCouponAlreadyOutOfDate(userSystemCoupon);
|
| | | } else if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
|
| | | userOtherMsgNotificationService.rewardCouponAlreadyOutOfDate(userSystemCoupon);
|
| | | }else if (baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
|
| | | userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponBuy);
|
| | | } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) {
|
| | | userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponGive);
|
| | | }
|
| | |
|
| | | } catch (Exception e) {
|
| | | try {
|
| | | LogHelper.errorDetailInfo(e);
|
| | |
| | | @Override
|
| | | public void sendBackTimeOutCoupon(Long uid) {
|
| | | // 超过10分钟 未被匹配的券
|
| | | List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid,600L);
|
| | | List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 600L);
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | |
| | |
|
| | | UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon();
|
| | |
|
| | | 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 - 1, new Date());
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
| | | endTime = format.parse(endDay);
|
| | | } catch (ParseException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | // 状态初始化
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUseTime(null);
|
| | |
|
| | | // 有效期时间重新定义
|
| | | userSystemCoupon.setStartTime(new Date());
|
| | | userSystemCoupon.setEndTime(endTime);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | | userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
|
| | | }
|
| | |
| | | *
|
| | | * @param userSystemCoupon
|
| | | */
|
| | | public void sendBackCoupon(UserSystemCoupon userSystemCoupon, UserSystemCouponRecord record) throws Exception {
|
| | |
|
| | | int expiryDay = 15;
|
| | |
|
| | | SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
|
| | | SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | if (coupon != null) {
|
| | | expiryDay = coupon.getExpiryDay();
|
| | | public void sendBackCoupon(UserSystemCoupon userCoupon, UserSystemCouponRecord record) throws Exception {
|
| | | if (userCoupon == null)
|
| | | return;
|
| | | |
| | | Integer state = userCoupon.getState();
|
| | | if (state != UserSystemCoupon.STATE_IN_USE) |
| | | return;
|
| | | |
| | | Date now = new Date();
|
| | | Date endTime = userCoupon.getEndTime();
|
| | | if (endTime != null && endTime.getTime() < now.getTime()) {
|
| | | |
| | | // TODO 过期
|
| | | return;
|
| | | }
|
| | |
|
| | | // 结束日期
|
| | | Date endTime = null;
|
| | | try {
|
| | | // 今天在内 减去一天
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, new Date());
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
| | | endTime = format.parse(endDay);
|
| | | } catch (ParseException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | // 状态初始化
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | |
| | | // 退回券
|
| | | UserSystemCoupon userSystemCoupon = new UserSystemCoupon();
|
| | | userSystemCoupon.setId(userCoupon.getId());
|
| | | userSystemCoupon.setGive(false);
|
| | | userSystemCoupon.setUseTime(null);
|
| | | // 有效期时间重新定义
|
| | | userSystemCoupon.setStartTime(new Date());
|
| | | userSystemCoupon.setEndTime(endTime);
|
| | |
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | |
|
| | | userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
|
| | |
|
| | | if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo());
|
| | | } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo());
|
| | | |
| | | // 使用记录
|
| | | if (record != null) {
|
| | | UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord();
|
| | | useRecordUpdate.setId(record.getId());
|
| | | useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
|
| | | useRecordUpdate.setUpdateTime(new Date());
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate);
|
| | | |
| | | if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo());
|
| | | } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo());
|
| | | } else if (CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.couponDrawBack(userSystemCoupon, record.getOrderNo(), MsgTypeOtherTypeEnum.freeCouponBuy);
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | @Override
|
| | | public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid)
|
| | | throws UserSystemCouponException, Exception {
|
| | | // 更新过期券
|
| | | updateCounponInvalid(uid);
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | |
|
| | |
|
| | | @Override
|
| | | public void sendBackGive(Long id) {
|
| | | UserSystemCoupon userSystemCoupon = userSystemCouponMapper.selectByPrimaryKey(id);
|
| | | if (userSystemCoupon == null)
|
| | | return;
|
| | | |
| | | Integer state = userSystemCoupon.getState();
|
| | | if (state != UserSystemCoupon.STATE_IN_USE) |
| | | return;
|
| | | |
| | | Date now = new Date();
|
| | | Date endTime = userSystemCoupon.getEndTime();
|
| | | if (endTime != null && endTime.getTime() < now.getTime()) {
|
| | | public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) {
|
| | | for (UserSystemCouponGiveRecord record: overdueList) {
|
| | | // 更新赠送记录
|
| | | UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
|
| | | updateRecord.setId(record.getId());
|
| | | updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE);
|
| | | userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord);
|
| | |
|
| | | // TODO 过期
|
| | | return;
|
| | | // 更新券信息
|
| | | Long couponId = record.getCouponId();
|
| | | if (couponId == null) {
|
| | | continue;
|
| | | }
|
| | | |
| | | // 券列表
|
| | | UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId);
|
| | | if (userCoupon == null)
|
| | | continue;
|
| | | |
| | | Integer state = userCoupon.getState();
|
| | | if (state != UserSystemCoupon.STATE_IN_USE) |
| | | return;
|
| | | |
| | | Date now = new Date();
|
| | | Date endTime = userCoupon.getEndTime();
|
| | | if (endTime != null && endTime.getTime() < now.getTime()) {
|
| | | |
| | | // TODO 过期
|
| | | continue;
|
| | | }
|
| | | |
| | | // 退回券
|
| | | UserSystemCoupon userSystemCoupon = new UserSystemCoupon();
|
| | | userSystemCoupon.setId(userCoupon.getId());
|
| | | userSystemCoupon.setGive(false);
|
| | | userSystemCoupon.setUseTime(null);
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | | userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
|
| | | |
| | | // 使用记录
|
| | | UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(couponId);
|
| | | if (useRecord != null) {
|
| | | UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord();
|
| | | useRecordUpdate.setId(useRecord.getId());
|
| | | useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
|
| | | useRecordUpdate.setUpdateTime(new Date());
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate);
|
| | | }
|
| | | |
| | | SystemCoupon systemCoupon = userCoupon.getSystemCoupon();
|
| | | if (systemCoupon != null) |
| | | systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | |
| | | if (systemCoupon == null)
|
| | | continue;
|
| | | |
| | | // 退回消息
|
| | | String beiZhu = "请到我的-福利中心查看";
|
| | | SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
|
| | | MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
|
| | | msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
|
| | | msgOther.setTitle("赠送" + systemCoupon.getName() + "退回");
|
| | | msgOther.setGiveType("你赠送的"+ systemCoupon.getName() + "未被成功领取");
|
| | | msgOther.setGiveTime(sd.format(record.getGiveTime()));
|
| | | msgOther.setReturnTime(sd.format(new Date()));
|
| | | userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther);
|
| | | }
|
| | | |
| | | userSystemCoupon.setGive(false);
|
| | | userSystemCoupon.setUseTime(null);
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | | userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
|
| | |
|
| | | // TODO 消息
|
| | | }
|
| | |
|
| | | }
|