| | |
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
|
| | | import com.yeshi.fanli.service.manger.msg.RocketMQManager;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | |
| | | @Resource
|
| | | private UserSystemCouponActivateService userSystemCouponActivateService;
|
| | |
|
| | | @Resource(name = "producer")
|
| | | private Producer producer;
|
| | | @Resource
|
| | | private RocketMQManager rocketMQManager;
|
| | |
|
| | | @Resource
|
| | | private UserInviteService userInviteService;
|
| | |
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public UserSystemCoupon freeCouponWinBySystem(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify,
|
| | | Integer expiryDay) throws UserSystemCouponException, Exception {
|
| | | Integer expiryDay, Integer activated) throws UserSystemCouponException, Exception {
|
| | | if (typeEnum == null || uid == null || StringUtil.isNullOrEmpty(source) || num < 1) {
|
| | | throw new UserSystemCouponException(1, "参数不正确");
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | // 激活状态
|
| | | int stateActivated = 0;
|
| | | // 自购免单券、赠送免单券可直接使用
|
| | | if (coupon.getType() == CouponTypeEnum.freeCouponBuy || coupon.getType() == CouponTypeEnum.freeCouponGive) {
|
| | | stateActivated = 1;
|
| | | activated = 1;
|
| | | }
|
| | |
|
| | | // 有效时长
|
| | | if (expiryDay == null) {
|
| | | if (stateActivated == 0)
|
| | | if (activated == 0)
|
| | | expiryDay = coupon.getActivateDay();
|
| | | if (expiryDay == null || expiryDay == 0)
|
| | | expiryDay = coupon.getExpiryDay();
|
| | |
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | | userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userCoupon.setStateActivated(stateActivated);
|
| | | userCoupon.setStateActivated(activated);
|
| | | userCoupon.setStartTime(nowTime);
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setCreateTime(nowTime);
|
| | |
| | |
|
| | | // 查询记录
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,
|
| | | UserSystemCouponRecord.STATE_SUCCESS);
|
| | | sourceType, UserSystemCouponRecord.STATE_SUCCESS);
|
| | | if (record == null) {
|
| | | throw new UserSystemCouponException(1, "没有使用券记录");
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | // 查询记录
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, null);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, null);
|
| | | if (record == null) {
|
| | | throw new UserSystemCouponException(1, "没有使用券记录");
|
| | | }
|
| | |
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void updateStateByDrawback(String orderNo) throws Exception {
|
| | | public void updateStateByDrawback(String orderNo, Integer sourceType) throws Exception {
|
| | |
|
| | | if (orderNo == null || orderNo.trim().length() == 0) {
|
| | | return;
|
| | | }
|
| | |
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, null);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, null);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | record.setOrderNo(orderNo);
|
| | | record.setUpdateTime(new Date());
|
| | | record.setState(UserSystemCouponRecord.STATE_FAIL_DRAWBACK);
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(record);
|
| | |
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void updateStateByArrivalAccount(String orderNo) throws Exception {
|
| | |
|
| | | public void updateStateByArrivalAccount(String orderNo, Integer sourceType) throws Exception {
|
| | | if (orderNo == null || orderNo.trim().length() == 0) {
|
| | | return;
|
| | | }
|
| | |
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, 2);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, 2);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | record.setOrderNo(orderNo);
|
| | | record.setUpdateTime(new Date());
|
| | | record.setState(UserSystemCouponRecord.STATE_SUCCESS);
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(record);
|
| | |
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId)
|
| | | public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long gId,Integer sourceType)
|
| | | throws Exception {
|
| | |
|
| | | boolean isfree = false;
|
| | |
|
| | | if (uid == null || payment == null || auctionId == null || orderNo == null || orderNo.trim().length() == 0) {
|
| | | if (uid == null || payment == null || gId == null || orderNo == null || orderNo.trim().length() == 0) {
|
| | | throw new Exception("传递参数不能为空");
|
| | | }
|
| | |
|
| | | |
| | | boolean isfree = false;
|
| | | // 查询等待匹配的券记录
|
| | | List<UserSystemCouponRecord> list = userSystemCouponRecordService.getRecordByState(uid,
|
| | | UserSystemCouponRecord.STATE_WAIT);
|
| | |
| | |
|
| | | for (UserSystemCouponRecord userSystemCouponRecord : list) {
|
| | | Long goodId = userSystemCouponRecord.getGoodId();
|
| | | if (auctionId.equals(goodId)) {
|
| | | Integer goodSource = userSystemCouponRecord.getGoodSource();
|
| | | if (goodSource == null)
|
| | | continue;
|
| | | |
| | | if (gId.equals(goodId) && goodSource == sourceType) {
|
| | | matching = true; // 匹配成功
|
| | | record = userSystemCouponRecord;
|
| | | break;
|
| | |
| | |
|
| | | // 商品匹配成功
|
| | | if (matching) {
|
| | |
|
| | | record.setGoodSource(sourceType);
|
| | | record.setOrderNo(orderNo);
|
| | | record.setUpdateTime(new Date());
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void exchangeCoupon(Long uid, String couponType, String source, BigDecimal percent)
|
| | | throws UserSystemCouponException, Exception {
|
| | | if (couponType == null || uid == null) {
|
| | | throw new UserSystemCouponException(1, "参数不正确");
|
| | | }
|
| | |
|
| | | SystemCoupon coupon = null;
|
| | | if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
|
| | | coupon = systemCouponService.getCouponByTypeAndPercent(couponType, percent);
|
| | | } else {
|
| | | coupon = systemCouponService.getCouponByType(couponType);
|
| | | }
|
| | |
|
| | | if (coupon == null) {
|
| | | throw new UserSystemCouponException(1, "券类型不正确");
|
| | | }
|
| | |
|
| | | int stateActivated = 1;
|
| | | if (couponType == CouponTypeEnum.freeCoupon.name()) {
|
| | | stateActivated = 0; //
|
| | | } else if (couponType == CouponTypeEnum.welfareFreeCoupon.name()
|
| | | && threeSaleSerivce.countFirstTeam(uid) <= 0) {
|
| | | stateActivated = 0; // 无下级队员 --待激活
|
| | | }
|
| | |
|
| | | Integer expiryDay = null;
|
| | | if (stateActivated == 0)
|
| | | expiryDay = coupon.getActivateDay();
|
| | |
|
| | | if (expiryDay == null || expiryDay == 0)
|
| | | expiryDay = coupon.getExpiryDay();
|
| | |
|
| | | // 计算结束日期:今天在内 减去一天
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, new Date());
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
| | | if (endDay != null && endDay.trim().length() > 0) {
|
| | | endDay += " 23:59:59";
|
| | | }
|
| | | Date endTime = format.parse(endDay);
|
| | |
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUid(uid);
|
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | | userCoupon.setStateActivated(stateActivated);
|
| | | userCoupon.setStartTime(new Date());
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setGive(false);
|
| | | userCoupon.setCreateTime(new Date());
|
| | | userCoupon.setUpdateTime(new Date());
|
| | | userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | |
|
| | | insertSelective(userCoupon);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | |
| | | msg.setCouponType(type.name());
|
| | | Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback, msg);
|
| | | // 延迟一分钟
|
| | | message.setStartDeliverTime(endTime.getTime() + 1000 * 60);
|
| | | try {
|
| | | producer.send(message);
|
| | | rocketMQManager.sendNormalMsg(message,1000 * 60L, null);
|
| | | } catch (Exception e) {
|
| | | throw new UserSystemCouponException(1, "创建赠送信息失败");
|
| | | }
|