Forráskód Böngészése

fix 清除车票时记录主账号信息

zoujiajian 3 éve
szülő
commit
41a76705b0

+ 23 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserTicketClearedRecord.java

@@ -16,6 +16,15 @@ import java.util.Date;
 public class UserTicketClearedRecord extends BaseEntity{
 	private Long userId;
 
+	private Long accountId;
+
+	/**
+	 * 主账号
+	 */
+	private String account;
+
+	private Source source;
+
 	private Long goodsId;
 
 	private Long skuId;
@@ -25,4 +34,18 @@ public class UserTicketClearedRecord extends BaseEntity{
 	private Date startTime;
 
 	private Date expiryTime;
+
+	@Getter
+	public enum Source{
+		self("自购"),
+		distribute("分销权益"),
+		pay_equipment("购买实物权益"),
+		specific("抽奖"),
+		;
+		String desc;
+
+		Source(String desc) {
+			this.desc = desc;
+		}
+	}
 }

+ 15 - 9
netflix-service/src/main/java/com/cyksj/service/distribute/equipment/impl/EquipmentDistributeServiceImpl.java

@@ -183,24 +183,30 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
 				.eq(GroupsRelation::getUserId, userId)
 				.eq(GroupsRelation::getId, relationId).eq(GroupsRelation::getStatus, GroupsRelation.Status.validity).last("limit 1"));
 		Date expiryTime = relation.getExpiryTime();
-		if (relation == null || expiryTime == null) {
+		if (relation == null) {
 			return;
 		}
-		DateTime now = DateTime.now();
-		Date finalDate = DateUtil.offset(expiryTime, DateField.MONTH, -months);
-		if (now.isAfter(finalDate)) {
-			//过期 直接清除车票
-			groupRelationClearService.clearTicket(relation);
+		if (expiryTime == null) {
+			//未发车直接清除车票
+			groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.distribute);
 		} else {
-			relation.setExpiryTime(finalDate);
-			groupsRelationMapper.updateById(relation);
+			DateTime now = DateTime.now();
+			Date finalDate = DateUtil.offset(expiryTime, DateField.MONTH, -months);
+			if (now.isAfter(finalDate)) {
+				//过期 直接清除车票
+				groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.distribute);
+			} else {
+				relation.setExpiryTime(finalDate);
+				groupsRelationMapper.updateById(relation);
+			}
 		}
-		Optional.ofNullable(receiveBenefitsRecord.getOrderId()).ifPresent(selfOrderId->{
+		Optional.ofNullable(receiveBenefitsRecord.getOrderId()).ifPresent(selfOrderId -> {
 			orderDonMapper.update(null, Wrappers.lambdaUpdate(OrderDon.class).eq(OrderDon::getId, selfOrderId)
 					.set(OrderDon::getRefundMoney, BigDecimal.ZERO)
 					.set(OrderDon::getStatus, OrderDon.Status.refund));
 		});
 		receiveBenefitsRecord.setRefundOrderId(orderId);
+		receiveBenefitsRecord.setStatusCode(0);
 		equipmentUserReceiveBenefitsRecordMapper.updateById(receiveBenefitsRecord);
 	}
 

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/relation/GroupRelationClearService.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.relation;
 
 import com.cyksj.model.entity.GroupsRelation;
+import com.cyksj.model.entity.UserTicketClearedRecord;
 
 /*
  *项目名: netflix
@@ -13,5 +14,5 @@ public interface GroupRelationClearService {
 	/**
 	 * 清除车票
 	 */
-	void clearTicket(GroupsRelation relation);
+	void clearTicket(GroupsRelation relation, UserTicketClearedRecord.Source source);
 }

+ 36 - 33
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationClearServiceImpl.java

@@ -35,39 +35,42 @@ public class GroupRelationClearServiceImpl implements GroupRelationClearService
 	private final UserTicketClearedRecordMapper userTicketClearedRecordMapper;
 
 	@Override
-	public void clearTicket(GroupsRelation relation) {
-			Long relationId = relation.getId();
-			Long userId = relation.getUserId();
-			Date startTime = relation.getStartTime();
-			Date expireTime = relation.getExpiryTime();
-			relation.setStartTime(null);
-			relation.setExpiryTime(null);
-			relation.setUserId(0l);
-			relation.setStatus(GroupsRelation.Status.none);
-			relation.setIsHandle(false);
-			relation.setRenewStatus(false);
-			relation.setAccount(null);
-			Integer success = groupsRelationMapper.updateExpiryTime(relation, expireTime);
-			if (success == 1) {
-				log.info("开始清除过期子账号,座位号:{}", relation.getId());
-				int count = groupsMapper.incrAvailableNum(relation.getGroupsId());
-				if (count == 0) {
-					log.error("车位异常 groupId:{}", relation.getGroupsId());
-					throw new BusinessRuntimeException("车位异常");
-				}
-				//记录用户被清除车票历史记录
-				GroupsRelationView groupsTrips = beanSearcher.searchFirst(GroupsRelationView.class,
-						MapUtils.builder().field(GroupsRelationView::getId, relationId).build());
-				if (groupsTrips != null) {
-					UserTicketClearedRecord userTicketClearedRecord = new UserTicketClearedRecord();
-					userTicketClearedRecord.setRelationId(relationId);
-					userTicketClearedRecord.setUserId(userId);
-					userTicketClearedRecord.setGoodsId(groupsTrips.getGoodsId());
-					userTicketClearedRecord.setSkuId(groupsTrips.getSkuId());
-					userTicketClearedRecord.setStartTime(startTime);
-					userTicketClearedRecord.setExpiryTime(expireTime);
-					userTicketClearedRecordMapper.insert(userTicketClearedRecord);
-				}
+	public void clearTicket(GroupsRelation relation, UserTicketClearedRecord.Source source) {
+		Long relationId = relation.getId();
+		Long userId = relation.getUserId();
+		Date startTime = relation.getStartTime();
+		Date expireTime = relation.getExpiryTime();
+		relation.setStartTime(null);
+		relation.setExpiryTime(null);
+		relation.setUserId(0l);
+		relation.setStatus(GroupsRelation.Status.none);
+		relation.setIsHandle(false);
+		relation.setRenewStatus(false);
+		relation.setAccount(null);
+		Integer success = groupsRelationMapper.updateExpiryTime(relation, expireTime);
+		if (success == 1) {
+			log.info("开始清除过期子账号,座位号:{}", relation.getId());
+			int count = groupsMapper.incrAvailableNum(relation.getGroupsId());
+			if (count == 0) {
+				log.error("车位异常 groupId:{}", relation.getGroupsId());
+				throw new BusinessRuntimeException("车位异常");
 			}
+			//记录用户被清除车票历史记录
+			GroupsRelationView groupsTrips = beanSearcher.searchFirst(GroupsRelationView.class,
+					MapUtils.builder().field(GroupsRelationView::getId, relationId).build());
+			if (groupsTrips != null) {
+				UserTicketClearedRecord userTicketClearedRecord = new UserTicketClearedRecord();
+				userTicketClearedRecord.setRelationId(relationId);
+				userTicketClearedRecord.setUserId(userId);
+				userTicketClearedRecord.setAccountId(groupsTrips.getAccountId());
+				userTicketClearedRecord.setAccount(groupsTrips.getTripsAccount());
+				userTicketClearedRecord.setSource(source);
+				userTicketClearedRecord.setGoodsId(groupsTrips.getGoodsId());
+				userTicketClearedRecord.setSkuId(groupsTrips.getSkuId());
+				userTicketClearedRecord.setStartTime(startTime);
+				userTicketClearedRecord.setExpiryTime(expireTime);
+				userTicketClearedRecordMapper.insert(userTicketClearedRecord);
+			}
+		}
 	}
 }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/task/Scheduler.java

@@ -84,7 +84,7 @@ public class Scheduler {
         List<GroupsRelation> expiryList = groupsRelationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).le(GroupsRelation::getExpiryTime, now));
         log.info("定时清理过期账号start ===> 数量:{}", expiryList.size());
         //过期账号清楚有效期
-        expiryList.forEach(relation -> groupRelationClearService.clearTicket(relation));
+        expiryList.forEach(relation -> groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.self));
     }
 
     @Scheduled(cron = "0 0 9 * * ?")