UserController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.cyksj.web.controller.user;
  2. import cn.hutool.core.date.DateTime;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.cyksj.dto.Result;
  5. import com.cyksj.enums.GatewayResponse;
  6. import com.cyksj.mapper.OrderDonMapper;
  7. import com.cyksj.mapper.manage.coupon.CouponUserMapper;
  8. import com.cyksj.mapper.market.task.UserBindDetailMapper;
  9. import com.cyksj.model.dto.UserWhoami;
  10. import com.cyksj.model.entity.CouponUser;
  11. import com.cyksj.model.entity.OrderDon;
  12. import com.cyksj.model.entity.User;
  13. import com.cyksj.model.entity.UserBindDetail;
  14. import com.cyksj.model.manage.views.GroupsRelationView;
  15. import com.cyksj.model.request.ExchangeCodeTicket;
  16. import com.cyksj.model.request.ReceiveBenefitsReq;
  17. import com.cyksj.model.views.RenewalView;
  18. import com.cyksj.model.views.UserAvailableGoodsTicketView;
  19. import com.cyksj.model.views.UserPersonalView;
  20. import com.cyksj.service.exchange.ExchangeCodeService;
  21. import com.cyksj.service.order.UserRealOrderBenefitsService;
  22. import com.cyksj.service.relation.GroupRelationFrontService;
  23. import com.cyksj.service.user.UserService;
  24. import com.cyksj.web.util.StpUserUtil;
  25. import lombok.RequiredArgsConstructor;
  26. import org.springframework.util.Assert;
  27. import org.springframework.web.bind.annotation.*;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. /**
  31. * @author chan
  32. * @date 2021/10/11 下午11:05
  33. */
  34. @RequestMapping("/applets/user")
  35. @RestController
  36. @RequiredArgsConstructor
  37. public class UserController {
  38. private final UserService userService;
  39. private final ExchangeCodeService exchangeCodeService;
  40. private final GroupRelationFrontService groupRelationFrontService;
  41. private final CouponUserMapper couponUserMapper;
  42. private final OrderDonMapper orderDonMapper;
  43. private final UserBindDetailMapper UserBindDetailMapper;
  44. private final UserRealOrderBenefitsService userRealOrderBenefitsService;
  45. @GetMapping(value = "/wx/whoami")
  46. public Result<UserWhoami> whoami() {
  47. long userId = StpUserUtil.getLoginIdAsLong();
  48. UserWhoami userWhoami = userService.whoami(userId);
  49. return GatewayResponse.SUCCESS.newBuilder().toResult(userWhoami);
  50. }
  51. /**
  52. * 兑换码兑换车票
  53. */
  54. @PostMapping("/get/ticket")
  55. public Result<String> getTicketByExchangeCode(@RequestBody ExchangeCodeTicket exchangeCodeTicket) {
  56. Long userId = StpUserUtil.getLoginIdAsLong();
  57. return exchangeCodeService.getTicketByExchangeCode(exchangeCodeTicket, userId);
  58. }
  59. /**
  60. * 个人中心详情
  61. */
  62. @GetMapping("/personal")
  63. public Result<UserPersonalView> getPersonalView() {
  64. long userId = StpUserUtil.getLoginIdAsLong();
  65. List<RenewalView> ticket = groupRelationFrontService.getMyTicket(userId, false);
  66. UserPersonalView personalView = new UserPersonalView();
  67. DateTime now = DateTime.now();
  68. //车票
  69. personalView.setNumOfTickets(ticket.size());
  70. //优惠券
  71. Integer couponSize = couponUserMapper.selectCount(Wrappers.lambdaQuery(CouponUser.class)
  72. .eq(CouponUser::getUserId, userId)
  73. .eq(CouponUser::getStatus, CouponUser.Status.unused)
  74. .le(CouponUser::getValidStartTime, now)
  75. .gt(CouponUser::getValidEndTime, now));
  76. personalView.setNumOfCoupons(couponSize);
  77. //积分
  78. User user = userService.getById(userId);
  79. personalView.setActivePoints(user.getActivePoints());
  80. //推广积分
  81. personalView.setPopularizePoints(user.getPoints());
  82. OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
  83. .eq(OrderDon::getUserId, userId)
  84. .eq(OrderDon::getStatus, OrderDon.Status.noPayment).last("limit 1"));
  85. personalView.setIsNoPayment(orderDon != null ? true : false);
  86. UserBindDetail bindPhone = UserBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
  87. .eq(UserBindDetail::getUserId, userId).last("limit 1"));
  88. //手机号
  89. if (bindPhone != null) {
  90. personalView.setPhone(bindPhone.getPhone());
  91. }
  92. return GatewayResponse.SUCCESS.newBuilder().toResult(personalView);
  93. }
  94. /**
  95. * 用户已有实物权益 可选车票
  96. */
  97. @GetMapping("/get/available/benefits/tickets")
  98. public Result<List<UserAvailableGoodsTicketView>> getAvailableBenefitsTickets(Long orderId) {
  99. Long userId = StpUserUtil.getLoginIdAsLong();
  100. List<UserAvailableGoodsTicketView> tickets = userRealOrderBenefitsService.getAvailableBenefitsTickets(userId, orderId);
  101. return GatewayResponse.SUCCESS.newBuilder().toResult(tickets);
  102. }
  103. /**
  104. * 用户领取实物权益
  105. */
  106. @PostMapping("/receive/benefits")
  107. public Result<List<GroupsRelationView>> receiveRealGoodsBenefits(@RequestBody List<ReceiveBenefitsReq> reqList) {
  108. List<GroupsRelationView> re = new ArrayList<>();
  109. Long userId = StpUserUtil.getLoginIdAsLong();
  110. reqList.forEach(req -> {
  111. Long benefitsId = req.getBenefitsId(), goodsId = req.getGoodsId(), skuId = req.getSkuId(), relationId = req.getRelationId();
  112. Assert.notNull(benefitsId, "可获取的权益不存在");
  113. Assert.notNull(goodsId, "请选择对应平台");
  114. Assert.notNull(skuId, "请选择对应权益规格");
  115. Assert.notNull(relationId, "请选择对应车票");
  116. GroupsRelationView groupsRelationView = userRealOrderBenefitsService.receiveRealGoodsBenefits(userId, benefitsId, goodsId, skuId, relationId);
  117. re.add(groupsRelationView);
  118. });
  119. return GatewayResponse.SUCCESS.newBuilder().toResult(re);
  120. }
  121. }