package com.cyksj.web.controller.group; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyksj.common.exception.BusinessRuntimeException; import com.cyksj.dto.Result; import com.cyksj.enums.GatewayResponse; import com.cyksj.mapper.GroupsRelationMapper; import com.cyksj.model.entity.GroupsRelation; import com.cyksj.model.entity.OrderDon; import com.cyksj.model.request.OrderPayRequest; import com.cyksj.model.views.RenewalView; import com.cyksj.service.order.OrderDonService; import com.cyksj.web.util.StpUserUtil; import com.ejlchina.searcher.BeanSearcher; import com.ejlchina.searcher.param.Operator; import com.ejlchina.searcher.util.MapUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; /** * @author chan * @date 2022/9/27 11:48 AM */ @Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/applets/group/relation") public class GroupRelationController { private final BeanSearcher beanSearcher; private final OrderDonService orderDonService; private final GroupsRelationMapper relationMapper; @RequestMapping("/get/renewal") public Result> get() { long userId = StpUserUtil.getLoginIdAsLong(); List list = beanSearcher.searchAll(RenewalView.class, MapUtils.builder() .field(RenewalView::getUserId, userId) .field(RenewalView::getStatus, List.of("validity", "overdue")).op(Operator.InList) .orderBy(RenewalView::getExpiryTime).asc() .build()); //过滤邀请制、已失效的车位 DateTime now = DateTime.now(); List collect = list.stream().filter(ticket -> { if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) { return false; } if (ticket.getSecondType() == 1) { ticket.setAccount(null); ticket.setPassword(null); } return true; }).collect(Collectors.toList()); return GatewayResponse.SUCCESS.newBuilder().toResult(collect); } @PostMapping("/post/renewal") public Result renewal(@RequestBody OrderPayRequest request) { long userId = StpUserUtil.getLoginIdAsLong(); request.setUserId(userId); OrderDon orderDon = orderDonService.renewal(request); return GatewayResponse.SUCCESS.newBuilder().toResult(orderDon); } @PutMapping("/update/set/account") public Result setAccount(@RequestBody GroupsRelation relation) { long userId = StpUserUtil.getLoginIdAsLong(); GroupsRelation re = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getId, relation.getId()).eq(GroupsRelation::getUserId, userId).last(" limit 1")); if (re == null) { throw new BusinessRuntimeException("该车票不存在,请联系客服."); } relationMapper.update(relation, Wrappers.lambdaUpdate(GroupsRelation.class).set(GroupsRelation::getAccount, relation.getAccount()).eq(GroupsRelation::getId, relation.getId())); return GatewayResponse.SUCCESS.newBuilder().toResult(); } }