| | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.enums.OrderFromEnum; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.page.BeanUtils; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.order.controller.management.dto.MgtMemberInvoicingAuditDTO; |
| | | import com.ruoyi.order.controller.management.dto.MgtMemberInvoicingQuery; |
| | | import com.ruoyi.order.controller.management.vo.MgtMemberInvoicingVO; |
| | | import com.ruoyi.order.domain.MemberInvoice; |
| | | import com.ruoyi.order.domain.MemberInvoiceOrder; |
| | | import com.ruoyi.order.domain.OrderAuction; |
| | | import com.ruoyi.order.dto.MemberInvoiceDTO; |
| | | import com.ruoyi.order.mapper.MemberInvoiceMapper; |
| | | import com.ruoyi.order.service.IMemberInvoiceOrderService; |
| | | import com.ruoyi.order.service.IMemberInvoiceService; |
| | | import com.ruoyi.order.service.IOrderAuctionService; |
| | | import com.ruoyi.order.service.IOrderService; |
| | | import com.ruoyi.system.api.domain.GoodsSeckill; |
| | | import com.ruoyi.system.api.domain.GoodsSku; |
| | | import com.ruoyi.system.api.domain.Member; |
| | | import com.ruoyi.system.api.domain.Order; |
| | | import com.ruoyi.system.api.domain.dto.MemberDTO; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | | import com.ruoyi.system.api.feignClient.MemberClient; |
| | | import io.seata.common.util.StringUtils; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private IOrderAuctionService iOrderAuctionService; |
| | | |
| | | @Resource |
| | | private MemberClient memberClient; |
| | | @Override |
| | | public void saveMemberInvoice(MemberInvoiceDTO memberInvoiceDTO) { |
| | | List<Long> memberInvoiceOrderList=memberInvoiceDTO.getOrderId(); |
| | | if (memberInvoiceOrderList.size()==0){ |
| | | throw new ServiceException("无开票订单"); |
| | | } |
| | | |
| | | MemberInvoice memberInvoice =new MemberInvoice(); |
| | | memberInvoice.setMemberId(memberInvoiceDTO.getMemberId()); |
| | | memberInvoice.setInvoiceMoney(memberInvoiceDTO.getInvoiceMoney()); |
| | |
| | | memberInvoice.setCorporationOpen(memberInvoiceDTO.getCorporationOpen()); |
| | | memberInvoice.setRiseType(memberInvoiceDTO.getRiseType()); |
| | | this.save(memberInvoice); |
| | | |
| | | List<Integer> memberInvoiceOrderList=memberInvoiceDTO.getOrderId(); |
| | | for (Integer memberInvoiceOrder:memberInvoiceOrderList){ |
| | | Double pice=0.00; |
| | | for (int i=0;i<memberInvoiceOrderList.size();i++){ |
| | | MemberInvoiceOrder memberInvoiceOrder1=new MemberInvoiceOrder(); |
| | | Order order= iOrderService.getById(memberInvoiceOrder); |
| | | order.setInvoiceStatus(1); |
| | | Order order= iOrderService.getById(memberInvoiceOrderList.get(i)); |
| | | order.setInvoiceStatus(2); |
| | | iOrderService.updateById(order); |
| | | memberInvoiceOrder1.setInvoiceId(memberInvoice.getId()); |
| | | memberInvoiceOrder1.setOrderMoney(order.getTotalAmount()); |
| | |
| | | OrderName=order.getSkuName(); |
| | | memberInvoiceOrder1.setOrderName(OrderName); |
| | | iMemberInvoiceOrderService.save(memberInvoiceOrder1); |
| | | pice=pice+order.getTotalAmount().doubleValue(); |
| | | } |
| | | |
| | | memberInvoice.setInvoiceMoney(new BigDecimal(pice)); |
| | | this.updateById(memberInvoice); |
| | | } |
| | | |
| | | @Override |
| | |
| | | Page<MemberInvoice> page1 = this.page(page, wrapper); |
| | | return PageDTO.of(page1); |
| | | } |
| | | |
| | | /** |
| | | * 获取开票申请列表分页数据 |
| | | * |
| | | * @param query 管理后台-开票申请相关接口 |
| | | * @return PageDTO<MgtMemberInvoicingVO> |
| | | */ |
| | | @Override |
| | | public PageDTO<MgtMemberInvoicingVO> getMemberInvoicingPage(MgtMemberInvoicingQuery query) { |
| | | Page<MemberInvoice> page = new Page<>(query.getPageCurr(), query.getPageSize()); |
| | | Set<Long> memberIdSet = null; |
| | | if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank( |
| | | query.getPhone())) { |
| | | MemberDTO memberDTO = new MemberDTO(); |
| | | memberDTO.setNickname(query.getNickname()); |
| | | memberDTO.setPhone(query.getPhone()); |
| | | List<Member> memberList = memberClient.getMemberListByCondition(memberDTO, |
| | | SecurityConstants.INNER).getData(); |
| | | if (memberList.isEmpty()) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | memberIdSet = memberList.stream().map(Member::getId) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | } |
| | | page = this.lambdaQuery() |
| | | .in(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(memberIdSet), |
| | | MemberInvoice::getMemberId, memberIdSet) |
| | | .eq(query.getInvoiceStatus() != null, MemberInvoice::getInvoiceStatus, |
| | | query.getInvoiceStatus()).orderByDesc(MemberInvoice::getCreateTime) |
| | | .page(page); |
| | | if (page.getRecords().isEmpty()) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | PageDTO<MgtMemberInvoicingVO> pageVO = PageDTO.of(page, |
| | | MgtMemberInvoicingVO.class); |
| | | Set<Long> memberSet = pageVO.getList().stream().map(MgtMemberInvoicingVO::getMemberId) |
| | | .collect(Collectors.toSet()); |
| | | List<Member> memberList = memberClient.getMemberListByIds(memberSet, |
| | | SecurityConstants.INNER).getData(); |
| | | Map<Long, Member> memberMap = memberList.stream() |
| | | .collect(Collectors.toMap(Member::getId, member -> member)); |
| | | pageVO.getList().forEach(vo -> { |
| | | Member member = memberMap.get(vo.getMemberId()); |
| | | if (member != null) { |
| | | vo.setNickname(member.getNickname()); |
| | | vo.setPhone(member.getPhone()); |
| | | } |
| | | }); |
| | | return pageVO; |
| | | } |
| | | |
| | | /** |
| | | * 查看详情 |
| | | * |
| | | * @param id 开票申请id |
| | | * @return MgtMemberInvoicingVO |
| | | */ |
| | | @Override |
| | | public MgtMemberInvoicingVO getMemberInvoicingDetail(Long id) { |
| | | MemberInvoice memberInvoice = getMemberInvoice(id); |
| | | MgtMemberInvoicingVO mgtMemberInvoicingVO = BeanUtils.copyBean(memberInvoice, |
| | | MgtMemberInvoicingVO.class); |
| | | // 查询用户信息 |
| | | Member member = memberClient.getMembeOne(mgtMemberInvoicingVO.getMemberId(), |
| | | SecurityConstants.INNER).getData(); |
| | | if (Objects.nonNull(member)) { |
| | | mgtMemberInvoicingVO.setNickname(member.getNickname()); |
| | | mgtMemberInvoicingVO.setPhone(member.getPhone()); |
| | | } |
| | | // 查询关联订单 |
| | | List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery() |
| | | .eq(MemberInvoiceOrder::getInvoiceId, id).list(); |
| | | String orderNo = memberInvoiceOrderList.stream().map(MemberInvoiceOrder::getOrderNo) |
| | | .collect(Collectors.joining(",")); |
| | | mgtMemberInvoicingVO.setOrderNo(orderNo); |
| | | return mgtMemberInvoicingVO; |
| | | } |
| | | |
| | | @NotNull |
| | | private MemberInvoice getMemberInvoice(Long id) { |
| | | MemberInvoice memberInvoice = this.getById(id); |
| | | if (Objects.isNull(memberInvoice)) { |
| | | throw new ServiceException("开票申请不存在"); |
| | | } |
| | | return memberInvoice; |
| | | } |
| | | |
| | | /** |
| | | * 审核 |
| | | * |
| | | * @param dto 管理后台-开票申请审核数据传输对象 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void audit(MgtMemberInvoicingAuditDTO dto) { |
| | | MemberInvoice memberInvoice = getMemberInvoice(dto.getId()); |
| | | if (!Objects.equals(memberInvoice.getInvoiceStatus(), 1)) { |
| | | throw new ServiceException("该开票申请已被审核"); |
| | | } |
| | | memberInvoice.setInvoiceStatus(dto.getInvoiceStatus()); |
| | | if (Objects.equals(dto.getInvoiceStatus(), 3)) { |
| | | memberInvoice.setRemark(dto.getRemark()); |
| | | } |
| | | this.updateById(memberInvoice); |
| | | // 更新关联订单状态 |
| | | List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery() |
| | | .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice.getId()) |
| | | .list(); |
| | | Set<String> orderNoSet = memberInvoiceOrderList.stream() |
| | | .map(MemberInvoiceOrder::getOrderNo) |
| | | .collect(Collectors.toSet()); |
| | | if (!orderNoSet.isEmpty()) { |
| | | iOrderService.lambdaUpdate() |
| | | .set(Order::getInvoiceStatus, dto.getInvoiceStatus() == 2 ? 3 : 4) |
| | | .in(Order::getOrderNo, orderNoSet).update(); |
| | | } |
| | | |
| | | } |
| | | } |