AdmissionTicketServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package beilv.admissionticket.service.impl;
  2. import beilv.admissionticket.domain.AdmissionTicket;
  3. import beilv.admissionticket.mapper.AdmissionTicketMapper;
  4. import beilv.admissionticket.service.IAdmissionTicketService;
  5. import beilv.common.core.domain.AjaxResult;
  6. import beilv.common.core.text.Convert;
  7. import beilv.common.utils.DateUtils;
  8. import beilv.competition.domain.RedisTask;
  9. import beilv.vipCardLog.domain.VipCardLog;
  10. import beilv.vipCardLog.mapper.VipCardLogMapper;
  11. import beilv.vipCardLog.service.IVipCardLogService;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.data.redis.core.StringRedisTemplate;
  14. import org.springframework.stereotype.Service;
  15. import java.time.LocalDateTime;
  16. import java.time.ZoneId;
  17. import java.time.format.DateTimeFormatter;
  18. import java.util.Date;
  19. import java.util.List;
  20. import java.util.Map;
  21. import static beilv.competition.domain.Constant.TASK_QUEUE_APPLY;
  22. import static beilv.competition.domain.Constant.TICKET_QUEUE;
  23. @Service
  24. public class AdmissionTicketServiceImpl implements IAdmissionTicketService {
  25. @Autowired
  26. private AdmissionTicketMapper ticketMapper;
  27. @Autowired
  28. private StringRedisTemplate redisTemplate;
  29. @Autowired
  30. private VipCardLogMapper vipCardLogMapper;
  31. @Autowired
  32. private StringRedisTemplate stringRedisTemplate;
  33. @Autowired
  34. private IVipCardLogService vipCardLogService;
  35. @Override
  36. public int insertAdmissionTicketToList(List<AdmissionTicket> ticketList) {
  37. return ticketMapper.insertAdmissionTicketToList(ticketList);
  38. }
  39. @Autowired
  40. private AdmissionTicketMapper beilvAdmissionTicketMapper;
  41. /**
  42. * 查询约球购票
  43. *
  44. * @param id 约球购票主键
  45. * @return 约球购票
  46. */
  47. @Override
  48. public AdmissionTicket selectBeilvAdmissionTicketById(String id) {
  49. return beilvAdmissionTicketMapper.selectBeilvAdmissionTicketById(id);
  50. }
  51. /**
  52. * 查询约球购票列表
  53. *
  54. * @param AdmissionTicket 约球购票
  55. * @return 约球购票
  56. */
  57. @Override
  58. public List<AdmissionTicket> selectBeilvAdmissionTicketList(AdmissionTicket AdmissionTicket) {
  59. return beilvAdmissionTicketMapper.selectBeilvAdmissionTicketList(AdmissionTicket);
  60. }
  61. /**
  62. * 新增约球购票
  63. *
  64. * @param AdmissionTicket 约球购票
  65. * @return 结果
  66. */
  67. @Override
  68. public int insertBeilvAdmissionTicket(AdmissionTicket AdmissionTicket) {
  69. return beilvAdmissionTicketMapper.insertBeilvAdmissionTicket(AdmissionTicket);
  70. }
  71. /**
  72. * 修改约球购票
  73. *
  74. * @param AdmissionTicket 约球购票
  75. * @return 结果
  76. */
  77. @Override
  78. public int updateBeilvAdmissionTicket(AdmissionTicket AdmissionTicket) {
  79. return beilvAdmissionTicketMapper.updateBeilvAdmissionTicket(AdmissionTicket);
  80. }
  81. /**
  82. * 批量删除约球购票
  83. *
  84. * @param ids 需要删除的约球购票主键
  85. * @return 结果
  86. */
  87. @Override
  88. public int deleteBeilvAdmissionTicketByIds(String ids) {
  89. return beilvAdmissionTicketMapper.deleteBeilvAdmissionTicketByIds(Convert.toStrArray(ids));
  90. }
  91. /**
  92. * 删除约球购票信息
  93. *
  94. * @param id 约球购票主键
  95. * @return 结果
  96. */
  97. @Override
  98. public int deleteBeilvAdmissionTicketById(String id) {
  99. return beilvAdmissionTicketMapper.deleteBeilvAdmissionTicketById(id);
  100. }
  101. @Override
  102. public void updateTicketStatus(List<String> ids, String ticketStatus) {
  103. beilvAdmissionTicketMapper.updateTicketStatus(ids, ticketStatus);
  104. }
  105. @Override
  106. public Map<String, Object> getThresholdValue(String ticketId) {
  107. return beilvAdmissionTicketMapper.getThresholdValue(ticketId);
  108. }
  109. @Override
  110. public int confirm(AdmissionTicket beilvAdmissionTicket) {
  111. //手动核销, 修改订单状态为核销
  112. VipCardLog vipCardLog = new VipCardLog();
  113. vipCardLog.setBusId(beilvAdmissionTicket.getId());
  114. vipCardLog.setOrderType("yueqiu");
  115. vipCardLog.setVerifyTime(DateUtils.getNowDate());
  116. vipCardLog.setPaymentStatus("payment_status_verification");
  117. vipCardLogMapper.updateVipCardLogByBusId(vipCardLog);
  118. //移除定时任务
  119. stringRedisTemplate.delete(TICKET_QUEUE+beilvAdmissionTicket.getId());
  120. //修改场次状态为核销
  121. return beilvAdmissionTicketMapper.updateBeilvAdmissionTicket(beilvAdmissionTicket);
  122. }
  123. @Override
  124. public AjaxResult refund(AdmissionTicket beilvAdmissionTicket) {
  125. VipCardLog vipCardLog = new VipCardLog();
  126. vipCardLog.setBusId(beilvAdmissionTicket.getId());
  127. return vipCardLogService.refundById(vipCardLog, false);
  128. }
  129. @Override
  130. public void createTask(AdmissionTicket AdmissionTicket){
  131. AdmissionTicket admissionTicket = beilvAdmissionTicketMapper.selectBeilvAdmissionTicketById(AdmissionTicket.getId());
  132. Date ticketDate = admissionTicket.getTicketDate(); //2025-11-14
  133. String session = admissionTicket.getSession().split("-")[0] + ":00"; //10:00:00
  134. // 将日期和时间拼接成一个字符串
  135. String dateTimeStr = ticketDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate() + " " + session;
  136. // 使用 DateTimeFormatter 解析字符串为 LocalDateTime 对象
  137. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  138. LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, formatter);
  139. // 获取到期时间
  140. long timestamp = dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
  141. //约场后, 开启定时任务.
  142. RedisTask redisTaskApply = new RedisTask(admissionTicket.getId(),"4","payment_status_verification");
  143. redisTemplate.opsForZSet().add(TICKET_QUEUE + admissionTicket.getId(), redisTaskApply.toString(), timestamp/1000);
  144. }
  145. }