Commit 2cf78f54 2cf78f54f653d5ac16380083dac5500b94da5866 by xianghan@topdraw.cn

修复清理积分接口

1 parent a1507fc5
......@@ -91,4 +91,6 @@ public interface PointsAvailableRepository extends JpaRepository<PointsAvailable
@Query(value = "SELECT sum(upa.points) AS pointsExpire from uc_points_available upa where upa.member_id = ?1"
,nativeQuery = true)
long findTotalCountByMemberId(Long memberId);
List<PointsAvailable> findByMemberIdAndExpireTimeAfter(Long memberId, Date timestamp);
}
......
......@@ -80,6 +80,8 @@ public interface PointsAvailableService {
*/
List<PointsAvailableDTO> findByMemberIdAndExpireTimeBefore(Long memberId, Date timestamp);
List<PointsAvailableDTO> findByMemberIdAndExpireTimeAfter(Long memberId, Date timestamp);
/**
* 即将过期的积分
* @param memberId 会员id
......
......@@ -127,6 +127,13 @@ public class PointsAvailableServiceImpl implements PointsAvailableService {
}
@Override
public List<PointsAvailableDTO> findByMemberIdAndExpireTimeAfter(Long memberId, Date timestamp) {
return Objects.nonNull(memberId)?
PointsAvailableMapper.toDto(PointsAvailableRepository.findByMemberIdAndExpireTimeAfter(memberId, timestamp))
:null;
}
@Override
public Long findSoonExpireTime(Long memberId, Integer factor) {
return PointsAvailableRepository.findSoonExpireTime(memberId, factor);
}
......
......@@ -102,8 +102,10 @@ public class PointsOperationServiceImpl implements PointsOperationService {
this.doInsertTrPointsDetailByAvailablePointsMap(tempPoints, customAvailablePointsMap, currentPoints);
// 4.更新可用积分表,超过的删除,剩余的新增
long totalPoints = this.doFreshTrPointsAvailableByAvailablePointsMap(customAvailablePointsMap, currentPoints);
// 5.即将过期的积分
long soonExpirePoints = this.getSoonExpirePoints(memberId, tempPoints);
// 6.更新会员积分信息
this.freshMemberCurrentPoints(memberId, totalPoints);
this.freshMemberCurrentPoints(memberId, totalPoints,soonExpirePoints);
return true;
}
......@@ -281,7 +283,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
*/
private void cleanInvalidAvailablePointsByMemberId(Long memberId) {
List<PointsAvailableDTO> pointsAvailableDTOS =
pointsAvailableService.findByMemberIdAndExpireTimeBefore(memberId,TimestampUtil.now());
pointsAvailableService.findByMemberIdAndExpireTimeAfter(memberId,TimestampUtil.now());
if (!CollectionUtils.isEmpty(pointsAvailableDTOS)) {
//1.获取原始积分
for (PointsAvailableDTO pointsAvailableDTO : pointsAvailableDTOS) {
......@@ -301,8 +303,10 @@ public class PointsOperationServiceImpl implements PointsOperationService {
this.cleanInvalidAvailablePointsByMemberId(memberId);
// 获取当前用户的可用总积分
long currentPoints = this.findAvailablePointsByMemberId(memberId);
// 即将过期的积分
long soonExpirePoints = this.getSoonExpirePoints(memberId, null);
// 更新会员信息
this.doUpdateMemberPoints(memberId,currentPoints);
this.doUpdateMemberPoints(memberId,currentPoints,soonExpirePoints);
return currentPoints;
}
......@@ -321,10 +325,11 @@ public class PointsOperationServiceImpl implements PointsOperationService {
* @param memberId
* @param currentPoints
*/
private void doUpdateMemberPoints(Long memberId, long currentPoints) {
private void doUpdateMemberPoints(Long memberId, long currentPoints,long soonExpirePoints) {
Member member = new Member();
member.setId(memberId);
member.setPoints(currentPoints);
member.setDuePoints(soonExpirePoints);
this.memberOperationService.doUpdateMemberPoints(member);
}
......@@ -403,9 +408,12 @@ public class PointsOperationServiceImpl implements PointsOperationService {
this.doInsertTrPointsAvailable(tempPoints);
log.info("----------->> refresh doInsertTrPointsAvailable end ");
// 即将过期的积分
long soonExpirePoints = this.getSoonExpirePoints(memberId, tempPoints);
// 6.更新会员的总积分
log.info("----------->> refresh freshMemberCurrentPoints start ");
this.freshMemberCurrentPoints(memberId, totalPoints);
this.freshMemberCurrentPoints(memberId, totalPoints,soonExpirePoints);
log.info("----------->> refresh freshMemberCurrentPoints end ");
} catch (Exception e) {
......@@ -461,11 +469,11 @@ public class PointsOperationServiceImpl implements PointsOperationService {
* @param memberId 会员Id
* @param currentPoints 当前总积分
*/
private void freshMemberCurrentPoints(Long memberId, Long currentPoints) {
private void freshMemberCurrentPoints(Long memberId, Long currentPoints,long duePoints) {
Member member = new Member();
member.setId(memberId);
member.setPoints(Objects.nonNull(currentPoints)?currentPoints:0);
// member.setDuePoints(duePoints);
member.setDuePoints(duePoints);
member.setUpdateTime(Timestamp.valueOf(LocalDateTime.now()));
try {
this.memberOperationService.doUpdateMemberPoints(member);
......
......@@ -554,13 +554,16 @@ public class TaskOperationServiceImpl implements TaskOperationService {
if (!CollectionUtils.isEmpty(taskList)) {
// 会员信息
MemberDTO memberDTO = this.memberService.findById(memberId);
// 判断是否完成任务
CompareTaskCondition compareTaskCondition =(MemberDTO memberDTO1,List<Task> taskList1) -> {
List<Task> taskStream = taskList1.stream().filter(task1 ->
task1.getStatus() == 1 &&
(Objects.isNull(task1.getExpireTime()) || task1.getExpireTime().compareTo(TimestampUtil.now()) >= 0) &&
(Objects.isNull(task1.getGroups()) || task1.getGroups().equalsIgnoreCase(memberDTO1.getGroups())) &&
(Objects.isNull(task1.getGroups()) || task1.getGroups().equals("0") || task1.getGroups().equalsIgnoreCase(memberDTO1.getGroups())) &&
(Objects.isNull(task1.getValidTime()) || task1.getValidTime().compareTo(TimestampUtil.now()) <= 0) &&
(Objects.isNull(task1.getMemberLevel()) || task1.getMemberLevel() <= memberDTO1.getLevel()) &&
(Objects.isNull(task1.getMemberVip()) || task1.getMemberVip() <= memberDTO1.getVip())
......
......@@ -53,9 +53,9 @@ public class PointsOperationControllerTest extends BaseTest {
@Test
public void grantPointsByManual(){
TempPoints tempPoints = new TempPoints();
tempPoints.setMemberId(5L);
tempPoints.setPoints(10L);
tempPoints.setPointsType(0);
tempPoints.setMemberId(3L);
tempPoints.setRightsSendStrategy(0);
tempPoints.setAccountId(2L);
tempPoints.setExpireTime(Timestamp.valueOf("2021-11-27 09:00:00"));
......@@ -72,6 +72,28 @@ public class PointsOperationControllerTest extends BaseTest {
LOG.info("===>>>"+byId);
}
@Test
public void cleanInvalidPointsAndCalculateCurrentPoints(){
/*TempPoints tempPoints = new TempPoints();
tempPoints.setMemberId(5L);
tempPoints.setPoints(10L);
tempPoints.setPointsType(0);
tempPoints.setRightsSendStrategy(0);
tempPoints.setAccountId(2L);
tempPoints.setExpireTime(Timestamp.valueOf("2021-11-27 09:00:00"));
tempPoints.setDeviceType(2);
tempPoints.setAppCode("WEI_XIN_GOLD_PANDA");
tempPoints.setOrderId(null);
tempPoints.setMediaId(null);
tempPoints.setActivityId(null);
tempPoints.setItemId(null);
tempPoints.setDescription("系统发放");
tempPoints.setEvtType(1);
String s = JSON.toJSONString(tempPoints);*/
ResultInfo byId = this.pointsOperationController.cleanInvalidPointsAndCalculateCurrentPoints(5L);
LOG.info("===>>>"+byId);
}
/*@Test
public void update(){
MemberAddress memberAddress = new MemberAddress();
......
......@@ -29,9 +29,9 @@ public class TaskOperationControllerTest extends BaseTest {
DataSyncMsg dataSyncMsg = new DataSyncMsg();
dataSyncMsg.setEventType(EventType.VIEWING.name());
DataSyncMsg.MsgData msgData = new DataSyncMsg.MsgData();
msgData.setEvent(6);
msgData.setEvent(3); // 类型 1-登录 2-观影 3-参加活动 4-订购 5-优享会员 6-签到
msgData.setRemarks("remark");
msgData.setMemberId(3L);
msgData.setMemberId(5L);
msgData.setDeviceType(2);
msgData.setAppCode("WEI_XIN_GOLD_PANDA");
dataSyncMsg.setMsg(msgData);
......