FaultSubscriberServiceImpl.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package com.kym.service.impl;
  2. import com.github.yulichang.base.MPJBaseServiceImpl;
  3. import com.kym.entity.FaultSubscriber;
  4. import com.kym.mapper.FaultSubscriberMapper;
  5. import com.kym.service.FaultSubscriberService;
  6. import org.springframework.stereotype.Service;
  7. import org.springframework.transaction.annotation.Transactional;
  8. import java.time.LocalDateTime;
  9. import java.util.List;
  10. @Service
  11. public class FaultSubscriberServiceImpl extends MPJBaseServiceImpl<FaultSubscriberMapper, FaultSubscriber> implements FaultSubscriberService {
  12. @Override
  13. @Transactional
  14. public void subscribe(String openid, String stationId) {
  15. var existing = lambdaQuery()
  16. .eq(FaultSubscriber::getOpenid, openid)
  17. .eq(FaultSubscriber::getStationId, stationId)
  18. .one();
  19. if (existing != null) {
  20. existing.setStatus(FaultSubscriber.STATUS_已订阅);
  21. existing.setSubscribeTime(LocalDateTime.now());
  22. existing.setUnbindTime(null);
  23. updateById(existing);
  24. } else {
  25. var subscriber = new FaultSubscriber()
  26. .setOpenid(openid)
  27. .setStationId(stationId)
  28. .setStatus(FaultSubscriber.STATUS_已订阅)
  29. .setSubscribeTime(LocalDateTime.now());
  30. save(subscriber);
  31. }
  32. }
  33. @Override
  34. @Transactional
  35. public void unsubscribe(String openid, String stationId) {
  36. lambdaUpdate()
  37. .set(FaultSubscriber::getStatus, FaultSubscriber.STATUS_已解绑)
  38. .set(FaultSubscriber::getUnbindTime, LocalDateTime.now())
  39. .eq(FaultSubscriber::getOpenid, openid)
  40. .eq(FaultSubscriber::getStationId, stationId)
  41. .update();
  42. }
  43. @Override
  44. public List<String> getSubscribedOpenids(String stationId) {
  45. return lambdaQuery()
  46. .select(FaultSubscriber::getOpenid)
  47. .eq(FaultSubscriber::getStationId, stationId)
  48. .eq(FaultSubscriber::getStatus, FaultSubscriber.STATUS_已订阅)
  49. .list()
  50. .stream()
  51. .map(FaultSubscriber::getOpenid)
  52. .toList();
  53. }
  54. @Override
  55. @Transactional
  56. public String toggleSubscription(String openid, String stationId) {
  57. var existing = lambdaQuery()
  58. .eq(FaultSubscriber::getOpenid, openid)
  59. .eq(FaultSubscriber::getStationId, stationId)
  60. .one();
  61. if (existing != null && existing.getStatus() == FaultSubscriber.STATUS_已订阅) {
  62. unsubscribe(openid, stationId);
  63. return "解绑成功";
  64. } else {
  65. subscribe(openid, stationId);
  66. return "绑定成功";
  67. }
  68. }
  69. }