From 91b005975abcc009e2ae97923ded51f6b8037f8a Mon Sep 17 00:00:00 2001 From: future <1360317836@qq.com> Date: Tue, 2 Jun 2026 09:56:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CheckServiceImpl.java | 35 +------------------ .../checkIn/websocket/MyWebSocketHandler.java | 3 +- .../gym/manage/checkin/CheckInModuleTest.java | 1 - .../common/constant/RedisKeyConstants.java | 3 ++ 4 files changed, 5 insertions(+), 37 deletions(-) diff --git a/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/service/impl/CheckServiceImpl.java b/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/service/impl/CheckServiceImpl.java index e041842..4d9285f 100644 --- a/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/service/impl/CheckServiceImpl.java +++ b/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/service/impl/CheckServiceImpl.java @@ -84,7 +84,6 @@ public class CheckServiceImpl implements ICheckInService { public Mono checkIn(Long memberId, String qrContent) { String key = RedisKeyConstants.QRCODE_USER_DAILY + memberId + LocalDate.now(); - // 先检查当天是否已经签到(从数据库查询,作为重复签到的额外保障) return checkTodayAlreadySignedIn(memberId) .flatMap(existingRecord -> { String checkInTime = existingRecord.getSignInTime().format(DATE_FORMATTER); @@ -126,11 +125,6 @@ public class CheckServiceImpl implements ICheckInService { }); } - /** - * 检查会员当天是否已经签到 - * @param memberId 会员ID - * @return 如果已签到返回签到记录,否则返回空 - */ private Mono checkTodayAlreadySignedIn(Long memberId) { LocalDateTime startOfDay = LocalDate.now().atStartOfDay(); LocalDateTime endOfDay = LocalDate.now().atTime(LocalTime.MAX); @@ -138,13 +132,9 @@ public class CheckServiceImpl implements ICheckInService { return signInRecordRepository.findByMemberIdAndDate(memberId, startOfDay, endOfDay); } - /** - * 处理签到逻辑 - */ private Mono processCheckIn(Long memberId, Long memberCardRecordId, Map redisMap, String qrContent) { LocalDateTime now = LocalDateTime.now(); - // 发送实时进度通知 MyWebSocketHandler.sendProgress(qrContent, "VALIDATE_CARD", "正在验证会员卡..."); return memberCardRecordRepository.findById(memberCardRecordId) @@ -163,10 +153,8 @@ public class CheckServiceImpl implements ICheckInService { return Mono.error(new RuntimeException("会员卡已过期")); } - // 发送实时进度通知 MyWebSocketHandler.sendProgress(qrContent, "VALIDATE_BOOKING", "会员卡验证通过,正在检查预约信息..."); - // 检查是否有需要签到的团课预约 return validateBooking(memberId, now) .then(memberCardRepository.findByMemberCardIdAndDeletedAtIsNull(cardRecord.getMemberCardId()) .switchIfEmpty(Mono.defer(() -> { @@ -174,7 +162,6 @@ public class CheckServiceImpl implements ICheckInService { return Mono.error(new RuntimeException("会员卡类型不存在")); })) .flatMap(card -> { - // 发送实时进度通知 MyWebSocketHandler.sendProgress(qrContent, "DEDUCT_USAGE", "正在扣减会员卡次数..."); return deductCardUsage(cardRecord, card) @@ -195,9 +182,6 @@ public class CheckServiceImpl implements ICheckInService { }); } - /** - * 验证预约信息 - */ private Mono validateBooking(Long memberId, LocalDateTime now) { return groupCourseBookingService.getBookingsByMemberId(memberId) .filter(booking -> { @@ -229,9 +213,6 @@ public class CheckServiceImpl implements ICheckInService { }); } - /** - * 扣减会员卡使用次数/金额 - */ private Mono deductCardUsage(MemberCardRecord record, MemberCard card) { MemberCardType cardType = MemberCardType.valueOf(card.getMemberCardType()); LocalDateTime now = LocalDateTime.now(); @@ -267,9 +248,6 @@ public class CheckServiceImpl implements ICheckInService { } } - /** - * 保存签到记录 - */ private Mono saveSignInRecord(Long memberId, Long memberCardRecordId, Long memberCardId) { SignInRecord record = SignInRecord.builder() .memberId(memberId) @@ -284,9 +262,6 @@ public class CheckServiceImpl implements ICheckInService { return signInRecordRepository.save(record).then(); } - /** - * 构建成功响应 - */ private String buildSuccessResponse(LocalDateTime dateTime) { Map res = new HashMap<>(); res.put("message", "签到成功"); @@ -294,9 +269,6 @@ public class CheckServiceImpl implements ICheckInService { return JSONUtil.toJsonStr(res); } - /** - * 查找会员的有效会员卡(优先选择有效期最早到期的) - */ private Mono findValidMemberCard(Long memberId) { return memberCardRecordRepository.findActiveCardsByMemberId(memberId) .filter(record -> { @@ -314,8 +286,6 @@ public class CheckServiceImpl implements ICheckInService { .next(); } - // ==================== 签到记录管理功能 ==================== - @Override public Flux getSignInRecords(Long memberId, LocalDate startTime, LocalDate endTime) { LocalDateTime start = startTime.atStartOfDay(); @@ -413,9 +383,6 @@ public class CheckServiceImpl implements ICheckInService { ); } - /** - * 转换实体到VO - */ private SignInRecordVO convertToVO(SignInRecord record) { SignInRecordVO vo = new SignInRecordVO(); vo.setId(record.getId()); @@ -436,4 +403,4 @@ public class CheckServiceImpl implements ICheckInService { if (now.isAfter(endOfDay)) return 1; return ChronoUnit.SECONDS.between(now, endOfDay); } -} \ No newline at end of file +} diff --git a/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/websocket/MyWebSocketHandler.java b/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/websocket/MyWebSocketHandler.java index f3bd900..7f705c8 100644 --- a/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/websocket/MyWebSocketHandler.java +++ b/gym-manage-api/gym-checkIn/src/main/java/cn/novalon/gym/manage/checkIn/websocket/MyWebSocketHandler.java @@ -77,7 +77,7 @@ public class MyWebSocketHandler implements WebSocketHandler { .doOnError(e -> { log.error("接收消息出错,sessionId={}", sessionId, e); }) - .subscribe(); // 必须订阅,否则不会执行 + .subscribe(); // 发送流给客户端 return session.send(sink.asFlux().map(session::textMessage)) @@ -100,7 +100,6 @@ public class MyWebSocketHandler implements WebSocketHandler { * @return 是否发送成功 */ public static boolean sendMessageToClient(String qrContent, String message) { - // 先清理超时连接 cleanupTimeoutConnections(); Sinks.Many sink = qrContentToSink.get(qrContent); diff --git a/gym-manage-api/gym-checkIn/src/test/java/cn/novalon/gym/manage/checkin/CheckInModuleTest.java b/gym-manage-api/gym-checkIn/src/test/java/cn/novalon/gym/manage/checkin/CheckInModuleTest.java index 27fb944..d73ab47 100644 --- a/gym-manage-api/gym-checkIn/src/test/java/cn/novalon/gym/manage/checkin/CheckInModuleTest.java +++ b/gym-manage-api/gym-checkIn/src/test/java/cn/novalon/gym/manage/checkin/CheckInModuleTest.java @@ -25,7 +25,6 @@ import reactor.test.StepVerifier; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.LocalTime; import java.util.HashMap; import java.util.Map; diff --git a/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/constant/RedisKeyConstants.java b/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/constant/RedisKeyConstants.java index 46d7c61..b32601e 100644 --- a/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/constant/RedisKeyConstants.java +++ b/gym-manage-api/manage-common/src/main/java/cn/novalon/gym/manage/common/constant/RedisKeyConstants.java @@ -61,6 +61,7 @@ public final class RedisKeyConstants { * appType: miniapp(小程序), mp(公众号) */ public static final String WECHAT_ACCESS_TOKEN = "wechat:access_token:"; +<<<<<<< HEAD // ==================== 认证模块 ==================== @@ -70,4 +71,6 @@ public final class RedisKeyConstants { * 用途:存储登录/注册等场景的短信验证码 */ public static final String SMS_CODE = "sms:code:"; +======= +>>>>>>> 08cf82a (签到模块) } \ No newline at end of file