| | |
| | | import java.util.stream.Collectors; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | query.getCouponType()) |
| | | .eq(StringUtils.isNotNull(query.getDistributionMethod()), |
| | | Coupon::getDistributionMethod, query.getDistributionMethod()) |
| | | .orderByDesc(Coupon::getCreateTime) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | if (StringUtils.isEmpty(page.getRecords())) { |
| | | return PageDTO.empty(page); |
| | |
| | | * @param dto 管理后台-优惠券数据传输对象 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateCoupon(MgtCouponDTO dto) { |
| | | Coupon coupon = this.getById(dto.getId()); |
| | | if (StringUtils.isNull(coupon)) { |
| | |
| | | coupon.setCouponName(dto.getCouponName()); |
| | | coupon.setDescription(dto.getDescription()); |
| | | this.updateById(coupon); |
| | | couponMemberService.lambdaUpdate().set(CouponMember::getDescription, dto.getDescription()) |
| | | .eq(CouponMember::getCouponId, dto.getId()).update(); |
| | | } |
| | | |
| | | /** |
| | | * 上架/下架 |
| | | * |
| | | * @param dto 管理后台-优惠券上架下架数据传输对象 |
| | | */ |
| | | @Override |
| | | public void updStatus(MgtCouponUpdDTO dto) { |
| | | this.lambdaUpdate() |
| | | .set(Coupon::getCouponStatus, dto.getCouponStatus()) |
| | | .eq(Coupon::getId, dto.getId()); |
| | | .eq(Coupon::getId, dto.getId()).update(); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query) { |
| | | MemberDTO memberDTO = null; |
| | | Set<Long> memberIdSet = null; |
| | | if (StringUtils.isNotBlank(query.getRealName()) || StringUtils.isNotBlank( |
| | | query.getPhone())) { |
| | | memberDTO = new MemberDTO(); |
| | | memberDTO.setRealName(query.getRealName()); |
| | | memberDTO.setPhone(query.getPhone()); |
| | | } |
| | | if (StringUtils.isNotNull(memberDTO)) { |
| | | List<Member> data = memberClient.getMemberListByCondition(memberDTO, |
| | | SecurityConstants.INNER).getData(); |
| | | memberIdSet = data.stream().map(Member::getId).collect(Collectors.toSet()); |
| | | MemberDTO memberDTO = getMemberQueryParam(query); |
| | | Set<Long> memberIdSet = getMemberIdSet(memberDTO); |
| | | if ((StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( |
| | | query.getPhone())) && CollUtils.isEmpty(memberIdSet)) { |
| | | return PageDTO.empty(0L, 0L); |
| | | } |
| | | Page<CouponMember> page = couponMemberService.lambdaQuery() |
| | | .eq(StringUtils.isNotNull(query.getCouponStatus()), |
| | |
| | | } |
| | | PageDTO<CouponReceiveDetailVO> couponReceiveDetailVOPageDTO = PageDTO.of(page, |
| | | CouponReceiveDetailVO.class); |
| | | // 远程调用会员服务,获取会员信息 |
| | | List<Long> memberIdList = page.getRecords().stream().map(CouponMember::getMemberId) |
| | | .collect(Collectors.toList()); |
| | | if (StringUtils.isNotEmpty(memberIdList)) { |
| | | List<Member> memberList = memberClient.getMemberListByIds(memberIdList, |
| | | SecurityConstants.INNER).getData(); |
| | | Map<Long, Member> memberMap = memberList.stream() |
| | | .collect(Collectors.toMap(Member::getId, Function.identity())); |
| | | couponReceiveDetailVOPageDTO.getList().forEach(item -> { |
| | | Member member = memberMap.get(item.getMemberId()); |
| | | item.setRealName(member.getRealName()); |
| | | item.setPhone(member.getPhone()); |
| | | }); |
| | | } |
| | | List<CouponReceiveDetailVO> couponReceiveDetailVOList = couponReceiveDetailVOPageDTO.getList(); |
| | | handleCouponReceiveDetailVO(couponReceiveDetailVOList); |
| | | return couponReceiveDetailVOPageDTO; |
| | | } |
| | | |
| | | private void handleCouponReceiveDetailVO( |
| | | List<CouponReceiveDetailVO> couponReceiveDetailVOList) { |
| | | // 远程调用订单服务,获取订单信息 |
| | | List<CouponReceiveDetailVO> usedCouponList = couponReceiveDetailVOPageDTO.getList().stream() |
| | | List<CouponReceiveDetailVO> usedCouponList = couponReceiveDetailVOList.stream() |
| | | .filter(item -> item.getCouponStatus().equals( |
| | | CouponUseEnum.USED)).collect(Collectors.toList()); |
| | | Set<Long> couponIdSet = usedCouponList.stream().map(CouponReceiveDetailVO::getCouponId) |
| | | Set<Long> couponIdSet = usedCouponList.stream().map(CouponReceiveDetailVO::getId) |
| | | .collect(Collectors.toSet()); |
| | | Map<String, Order> orderMap = null; |
| | | Map<Long, Member> memberMap = null; |
| | |
| | | Function.identity())); |
| | | |
| | | } |
| | | Set<Long> memberSet = couponReceiveDetailVOPageDTO.getList().stream() |
| | | // 远程调用会员服务,获取会员信息 |
| | | Set<Long> memberSet = couponReceiveDetailVOList.stream() |
| | | .map(CouponReceiveDetailVO::getMemberId).collect( |
| | | Collectors.toSet()); |
| | | if (StringUtils.isNotEmpty(memberSet)) { |
| | |
| | | Collectors.toMap(Member::getId, Function.identity())); |
| | | } |
| | | // 封装VO |
| | | for (CouponReceiveDetailVO couponReceiveDetailVO : couponReceiveDetailVOPageDTO.getList()) { |
| | | for (CouponReceiveDetailVO couponReceiveDetailVO : couponReceiveDetailVOList) { |
| | | if (StringUtils.isNotEmpty(memberMap)) { |
| | | Member member = memberMap.get(couponReceiveDetailVO.getMemberId()); |
| | | if (StringUtils.isNotNull(member)) { |
| | | couponReceiveDetailVO.setRealName(member.getRealName()); |
| | | couponReceiveDetailVO.setNickname(member.getNickname()); |
| | | couponReceiveDetailVO.setPhone(member.getPhone()); |
| | | } |
| | | } else if (StringUtils.isNotEmpty(orderMap)) { |
| | | Order order = orderMap.get(couponReceiveDetailVO.getCouponId() + "-" |
| | | } |
| | | if (StringUtils.isNotEmpty(orderMap)) { |
| | | Order order = orderMap.get(couponReceiveDetailVO.getId() + "-" |
| | | + couponReceiveDetailVO.getMemberId()); |
| | | if (StringUtils.isNotNull(order)) { |
| | | couponReceiveDetailVO.setOrderNo(order.getOrderNo()); |
| | | couponReceiveDetailVO.setCreateTime(order.getCreateTime()); |
| | | couponReceiveDetailVO.setUseTime(order.getCreateTime()); |
| | | } |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | return couponReceiveDetailVOPageDTO; |
| | | } |
| | | |
| | | private Set<Long> getMemberIdSet(MemberDTO memberDTO) { |
| | | Set<Long> memberIdSet = null; |
| | | if (StringUtils.isNotNull(memberDTO)) { |
| | | List<Member> data = memberClient.getMemberListByCondition(memberDTO, |
| | | SecurityConstants.INNER).getData(); |
| | | memberIdSet = data.stream().map(Member::getId).collect(Collectors.toSet()); |
| | | } |
| | | return memberIdSet; |
| | | } |
| | | |
| | | private static MemberDTO getMemberQueryParam(MgtCouponReceiveQuery query) { |
| | | MemberDTO memberDTO = null; |
| | | if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( |
| | | query.getPhone())) { |
| | | memberDTO = new MemberDTO(); |
| | | memberDTO.setNickname(query.getNickname()); |
| | | memberDTO.setPhone(query.getPhone()); |
| | | } |
| | | return memberDTO; |
| | | } |
| | | |
| | | /** |
| | | * 查询领取详情列表 |
| | | * |
| | | * @param query 管理后台-优惠券领取详情查询对象 |
| | | * @return List<CouponReceiveDetailVO> |
| | | */ |
| | | @Override |
| | | public List<CouponReceiveDetailVO> getCouponReceiveDetailList(MgtCouponReceiveQuery query) { |
| | | MemberDTO memberDTO = getMemberQueryParam(query); |
| | | Set<Long> memberIdSet = getMemberIdSet(memberDTO); |
| | | List<CouponMember> couponMemberList = couponMemberService.lambdaQuery() |
| | | .eq(StringUtils.isNotNull(query.getCouponStatus()), |
| | | CouponMember::getCouponStatus, query.getCouponStatus()) |
| | | .in(StringUtils.isNotEmpty(memberIdSet), CouponMember::getMemberId, memberIdSet) |
| | | .eq(CouponMember::getCouponId, query.getId()) |
| | | .list(); |
| | | if (StringUtils.isEmpty(couponMemberList)) { |
| | | throw new ServiceException("没有符合条件的数据导出"); |
| | | } |
| | | List<CouponReceiveDetailVO> couponReceiveDetailVOList = BeanUtils.copyList(couponMemberList, |
| | | CouponReceiveDetailVO.class); |
| | | handleCouponReceiveDetailVO(couponReceiveDetailVOList); |
| | | return couponReceiveDetailVOList; |
| | | } |
| | | } |