| | |
| | | import org.yeshi.utils.DateUtil;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
|
| | | import com.yeshi.fanli.dto.msg.MsgOtherCouponActivateDTO;
|
| | | import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
|
| | | import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord;
|
| | |
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public void insertUserCoupon(Long uid, String couponType, String source, BigDecimal percent)
|
| | | public UserSystemCoupon insertUserCoupon(Long uid, String couponType, String source, BigDecimal percent)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
|
| | | if (couponType == null || uid == null) {
|
| | |
| | | // 随机奖励券
|
| | | if (percent == null || percent.compareTo(new BigDecimal(0)) < 1) {
|
| | | randomRewardCoupon(1, uid, source);
|
| | | return;
|
| | | return null;
|
| | | } else {
|
| | | coupon = systemCouponService.getCouponByTypeAndPercent(couponType, percent);
|
| | | }
|
| | |
| | | e1.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | | return userCoupon;
|
| | | }
|
| | |
|
| | | @Transactional
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | throw new UserSystemCouponException(1, "用户未登录");
|
| | | }
|
| | |
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | throw new UserSystemCouponException(1, "商品ID为空");
|
| | | }
|
| | |
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | |
| | | return userSystemCouponMapper.getCounponNowInvalid(count);
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId)
|
| | |
| | | @Override
|
| | | public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid)
|
| | | throws UserSystemCouponException, Exception {
|
| | | |
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | |
| | | // 赠送的退回
|
| | | sendBackGiveUser(uid);
|
| | | |
| | | |
| | | List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid);
|
| | | if (listVO == null || listVO.size() == 0) {
|
| | | return listVO;
|
| | |
| | | listTip.add("满足条件后,系统将自动激活,并在消息-其它消息中提醒。");
|
| | | userCouponVO.setTips(listTip);
|
| | | userCouponVO.setPopup(true);
|
| | | |
| | | // 验证是否已累计3单
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | freeCouponActivate(userCouponVO.getId(), uid, userCouponVO.getCreateTime());
|
| | | }
|
| | | });
|
| | | |
| | | } else if (CouponTypeEnum.welfareFreeCoupon == type) {
|
| | | jumpBtn = new HashMap<String, Object>();
|
| | | if (inviteCode != null && inviteCode.trim().length() > 0) {
|
| | |
| | |
|
| | | if (UserSystemCoupon.STATE_IN_USE == state && (CouponTypeEnum.freeCouponBuy == type
|
| | | || CouponTypeEnum.freeCoupon == type || CouponTypeEnum.welfareFreeCoupon == type)) {
|
| | | userCouponVO.setInUseExplain(configService.get("free_coupon_using-help"));
|
| | | List<String> listTip = new ArrayList<String>();
|
| | | listTip.add("系统正在判断是否符合免单需求;");
|
| | | listTip.add("系统正在同步淘宝订单;");
|
| | | listTip.add("未使用成功的免单券会原路退回。");
|
| | | userCouponVO.setTipsUsing(listTip);
|
| | | }
|
| | |
|
| | | // 是否已赠送
|
| | |
| | | Date useTime = userCouponVO.getUseTime();
|
| | | if (useTime != null) {
|
| | | Map<String, Object> remainDays = new HashMap<String, Object>();
|
| | | remainDays.put("content", "于" + sdf.format(useTime) + "成功赠送");
|
| | | remainDays.put("content", "于" + sdf.format(useTime) + "赠送");
|
| | | remainDays.put("fontColor", "#CCCCCC");
|
| | | userCouponVO.setRemainDays(remainDays);
|
| | | }
|
| | |
| | | Date useTime = userCouponVO.getUseTime();
|
| | | if (useTime != null) {
|
| | | Map<String, Object> remainDays = new HashMap<String, Object>();
|
| | | remainDays.put("content", "于" + sdf.format(useTime) + "成功使用");
|
| | | remainDays.put("content", "于" + sdf.format(useTime) + "使用");
|
| | | remainDays.put("fontColor", "#CCCCCC");
|
| | | userCouponVO.setRemainDays(remainDays);
|
| | | }
|
| | |
| | | }
|
| | |
|
| | |
|
| | | /**
|
| | | * 免单券激活
|
| | | * @param uid
|
| | | */
|
| | | public void freeCouponActivate(Long id,Long uid, Date date) {
|
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
| | | long count = commonOrderCountService.countValidOrderByDate(uid, sdf.format(date));
|
| | | |
| | | String activateNum = configService.get("free_coupon_activate_num");
|
| | | int num = Integer.parseInt(activateNum);
|
| | | |
| | | if (count >= num) {
|
| | | UserSystemCoupon coupon = userSystemCouponMapper.selectByPrimaryKey(id);
|
| | | if (coupon == null || coupon.getState() != UserSystemCoupon.STATE_CAN_USE
|
| | | || coupon.getStateActivated() != 0)
|
| | | return;
|
| | | |
| | | Date nowDate = new Date();
|
| | | Date endTime2 = coupon.getEndTime();
|
| | | if (endTime2 != null && endTime2.getTime() <= nowDate.getTime())
|
| | | return;
|
| | | |
| | | |
| | | SystemCoupon systemCoupon = coupon.getSystemCoupon();
|
| | | if (systemCoupon == null)
|
| | | return;
|
| | | |
| | | systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
|
| | | if (systemCoupon == null || systemCoupon.getType() != CouponTypeEnum.freeCoupon)
|
| | | return;
|
| | | |
| | |
|
| | | try {
|
| | | Integer expiryDay = systemCoupon.getExpiryDay();
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, nowDate);
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
| | | Date endTime = format.parse(endDay);
|
| | | |
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setId(coupon.getId());
|
| | | userCoupon.setStateActivated(1);
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setStartTime(nowDate);
|
| | | userCoupon.setUpdateTime(new Date());
|
| | | userSystemCouponMapper.updateByPrimaryKeySelective(userCoupon);
|
| | | |
| | | // 赠送记录
|
| | | UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getByReceiveId(id);
|
| | | if (giveRecord == null) |
| | | return;
|
| | | |
| | | Long giveUid = giveRecord.getGiveUid();
|
| | | UserInfo userInfo = userInfoService.selectByPKey(giveUid);
|
| | | if (userInfo == null) |
| | | return;
|
| | | |
| | | String beiZhu = "请到我的-福利中心中查看";
|
| | | SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
| | | MsgOtherCouponActivateDTO msgOther = new MsgOtherCouponActivateDTO();
|
| | | msgOther.setTitle("免单券激活");
|
| | | msgOther.setType("免单券系统已自动激活");
|
| | | msgOther.setExplain("满足"+ systemCoupon.getActivateDay() +"天内产生"+ num +"笔已到账返利订单");
|
| | | msgOther.setGiveUser("昵称:"+ userInfo.getNickName() +" ID:" + giveUid);
|
| | | msgOther.setReceiveTime(sd.format(giveRecord.getReceiveTime()));
|
| | | msgOther.setValidityTime(expiryDay + "天");
|
| | | userOtherMsgNotificationService.giveCouponActivateMsg(uid, beiZhu, msgOther);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | @Transactional
|
| | | @Override
|
| | | public void updateInvalidSate(Long uid) {
|
| | | List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalidByUid(uid);
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | updateCounponInvalid(list);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public void updateCounponInvalid(List<UserSystemCoupon> list) {
|
| | | if (list == null || list.size() == 0) {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | /**
|
| | | * 退回券 初始数据
|
| | |
| | | couponRecord.setUpdateTime(new Date());
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord);
|
| | |
|
| | | UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon();
|
| | | // 状态初始化
|
| | | UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon();
|
| | | userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userSystemCoupon.setUseTime(null);
|
| | | userSystemCoupon.setUpdateTime(new Date());
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | |
| | | @Transactional
|
| | | @Override
|
| | | public void sendBackGiveUser(Long uid) {
|
| | | List<UserSystemCouponGiveRecord> list =userSystemCouponGiveRecordService.overdueListByUser(uid);
|
| | | if (list == null || list.size() == 0) {
|
| | | return;
|
| | | }
|
| | | sendBackGiveCoupon(list);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) {
|
| | |
| | | if (systemCoupon == null)
|
| | | continue;
|
| | |
|
| | | String couponName = systemCoupon.getName();
|
| | | if (CouponTypeEnum.freeCouponGive == systemCoupon.getType())
|
| | | couponName = "免单券";
|
| | |
|
| | | // 退回消息
|
| | | String couponName = systemCoupon.getName();
|
| | | if (CouponTypeEnum.freeCouponGive == systemCoupon.getType()) {
|
| | | couponName = "免单券";
|
| | | } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
|
| | | couponName = "奖励券";
|
| | | }
|
| | | |
| | | String beiZhu = "请到我的-福利中心查看";
|
| | | SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
| | | MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
|
| | | msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
|
| | | msgOther.setTitle("赠送" + couponName + "退回");
|
| | | msgOther.setTitle(couponName + "退回");
|
| | | msgOther.setGiveType("你赠送的"+ couponName + "未被成功领取");
|
| | | msgOther.setGiveTime(sd.format(record.getGiveTime()));
|
| | | msgOther.setReturnTime(sd.format(new Date()));
|
| | |
| | |
|
| | | @Override
|
| | | public boolean getIncludeExchange(Long uid) {
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | String percent = configService.get("exchange_rebate_percent");
|
| | | if (StringUtil.isNullOrEmpty(percent))
|
| | | percent = "35";
|
| | |
| | |
|
| | | @Override
|
| | | public boolean getIncludeNotExchange(Long uid) {
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | String percent = configService.get("exchange_rebate_percent");
|
| | | if (StringUtil.isNullOrEmpty(percent))
|
| | | percent = "35";
|
| | |
| | |
|
| | | @Override
|
| | | public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception{
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | | |
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | String percent = configService.get("exchange_rebate_percent");
|