| | |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.AppContants; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IAdminMallOrderService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | |
| | | |
| | | private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper; |
| | | |
| | | private final MallGoodsCommentMapper mallGoodsCommentMapper; |
| | | |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | |
| | | private final MallMemberPaymentMapper mallMemberPaymentMapper; |
| | | |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | private final MallRefundMapper mallRefundMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | |
| | | |
| | | @Override |
| | | public IPage<MallOrderInfo> findOrderListInPage(MallOrderInfo mallOrderInfo, QueryRequest request) { |
| | | Page<MallOrderInfo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return this.baseMapper.selectInPage(mallOrderInfo, page); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) { |
| | | Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallOrderInfoVo> adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo); |
| | | if(CollUtil.isNotEmpty(adminMallOrderInfoVos.getRecords())){ |
| | | for(AdminMallOrderInfoVo adminMallOrderInfoVo : adminMallOrderInfoVos.getRecords()){ |
| | | Long orderId = adminMallOrderInfoVo.getId(); |
| | | adminMallOrderInfoVo.setGoodsAmount(adminMallOrderInfoVo.getAmount().subtract(adminMallOrderInfoVo.getCarriage())); |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderId); |
| | | if(CollUtil.isNotEmpty(mallOrderItemList)){ |
| | | StringBuffer stringBuffer = new StringBuffer(); |
| | | for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | stringBuffer.append(mallOrderItem.getGoodsName()) |
| | | .append("-") |
| | | .append(mallOrderItem.getSkuName()) |
| | | .append("*").append(mallOrderItem.getCnt()).append(";"); |
| | | // if(ObjectUtil.isNotEmpty(mallOrderItem.getMemberInviteId())){ |
| | | // MallMember mallMember = mallMemberMapper.selectInfoByInviteId(mallOrderItem.getMemberInviteId()); |
| | | // if(ObjectUtil.isNotEmpty(mallMember)){ |
| | | // adminMallOrderInfoVo.setRefererName(mallMember.getName()); |
| | | // } |
| | | // } |
| | | } |
| | | adminMallOrderInfoVo.setGoodsName(stringBuffer.toString()); |
| | | } |
| | | } |
| | | } |
| | | return adminMallOrderInfoVos; |
| | | } |
| | | |
| | |
| | | if(2 != status){ |
| | | return new FebsResponse().fail().message("订单不是待发货状态"); |
| | | } |
| | | Integer deliveryType = mallOrderInfo.getDeliveryType(); |
| | | if(2 != deliveryType){ |
| | | return new FebsResponse().fail().message("订单的配送方式不是快递"); |
| | | } |
| | | String expressNo = deliverGoodsDto.getExpressNo(); |
| | | if(StrUtil.isEmpty(expressNo)){ |
| | | return new FebsResponse().fail().message("请输入物流单号"); |
| | |
| | | mallExpressInfo.setExpressCom(expressCom); |
| | | mallExpressInfoMapper.insert(mallExpressInfo); |
| | | |
| | | mallOrderInfo.setStatus(3); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(), |
| | | OrderStatusEnum.WAIT_FINISH.getValue(), |
| | | OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); |
| | | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | StringBuffer orderItems = new StringBuffer(); |
| | | for (MallOrderItem item : mallOrderItems){ |
| | | StringBuffer orderItem = new StringBuffer(); |
| | | orderItems.append(item.getGoodsName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n "); |
| | | orderItems.append(item.getGoodsName()+"-"+item.getSkuName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n "); |
| | | orderItems.append(orderItem); |
| | | } |
| | | adminOrderDetailVo.setOrderItems(orderItems.toString()); |
| | |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | |
| | | if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){ |
| | | BigDecimal amount = mallOrderRefund.getAmount(); |
| | | //用户钱包增加对应的余额 |
| | | iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId()); |
| | | //新增一条资金流水 |
| | | MallMoneyFlow mallMoneyFlow = new MallMoneyFlow(); |
| | | mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId()); |
| | | mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo()); |
| | | mallMoneyFlow.setType(4); |
| | | mallMoneyFlow.setAmount(mallOrderInfo.getAmount()); |
| | | mallMoneyFlowMapper.insert(mallMoneyFlow); |
| | | iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId()); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallOrderInfo.getMemberId(), |
| | | amount, |
| | | ScoreFlowTypeEnum.REFUND.getValue(), |
| | | mallOrderInfo.getOrderNo(), |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),amount), |
| | | 2 |
| | | ); |
| | | } |
| | | |
| | | MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation(); |
| | |
| | | mallOrderInfo.setStatus(6); |
| | | mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | |
| | | BigDecimal refundAmount = mallOrderRefund.getAmount(); |
| | | //用户钱包增加对应的余额 |
| | | iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId()); |
| | | iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId()); |
| | | |
| | | //新增一条资金流水 |
| | | MallMoneyFlow mallMoneyFlow = new MallMoneyFlow(); |
| | | mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId()); |
| | | mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo()); |
| | | mallMoneyFlow.setType(4); |
| | | mallMoneyFlow.setAmount(mallOrderInfo.getAmount()); |
| | | mallMoneyFlowMapper.insert(mallMoneyFlow); |
| | | |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallOrderInfo.getMemberId(), |
| | | refundAmount, |
| | | ScoreFlowTypeEnum.REFUND.getValue(), |
| | | mallOrderInfo.getOrderNo(), |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | StrUtil.format(ScoreFlowTypeEnum.REFUND.getDesc(),refundAmount), |
| | | 2 |
| | | ); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | return adminMallMemberPaymentVo; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallGoodsCommentVo> getCommentListInPage(AdminMallGoodsCommentDto adminMallGoodsCommentDto, QueryRequest request) { |
| | | Page<AdminMallGoodsCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallGoodsCommentVo> adminMallGoodsCommentVos = mallGoodsCommentMapper.getCommentListInPage(page, adminMallGoodsCommentDto); |
| | | return adminMallGoodsCommentVos; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse showStateSwitchOn(Long id) { |
| | | MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id); |
| | | if (ObjectUtil.isEmpty(mallGoodsComment)) { |
| | | return new FebsResponse().fail().message("评论不存在,请刷新当前页面"); |
| | | } |
| | | mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_ENABLE); |
| | | mallGoodsCommentMapper.updateById(mallGoodsComment); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse showStateSwitchOff(Long id) { |
| | | MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id); |
| | | if (ObjectUtil.isEmpty(mallGoodsComment)) { |
| | | return new FebsResponse().fail().message("评论不存在,请刷新当前页面"); |
| | | } |
| | | mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_DISABLED); |
| | | mallGoodsCommentMapper.updateById(mallGoodsComment); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public void updateOrderStateAndDeliveryState(Long id, int value, int value1) { |
| | | mallOrderInfoMapper.updateOrderStateAndDeliveryState(id,value,value1); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MallRefundEntity> getOrderRefundListInPage(MallRefundEntity mallRefundEntity, QueryRequest request) { |
| | | Page<MallRefundEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<MallRefundEntity> mallRefundEntityIPage = mallRefundMapper.getOrderRefundListInPage(page, mallRefundEntity); |
| | | List<MallRefundEntity> records = mallRefundEntityIPage.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(MallRefundEntity mallRefundEntityPic : records){ |
| | | String refundPic = mallRefundEntityPic.getRefundPic(); |
| | | if(StrUtil.isNotEmpty(refundPic)){ |
| | | String[] split = StrUtil.split(refundPic, ","); |
| | | mallRefundEntityPic.setRefundPicList(split); |
| | | } |
| | | } |
| | | } |
| | | return mallRefundEntityIPage; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminGoodsStatisticsVo> goodsStatistics(MallOrderItem mallOrderItem, QueryRequest request) { |
| | | Page<AdminGoodsStatisticsVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminGoodsStatisticsVo> adminGoodsStatisticsVos = mallOrderInfoMapper.getGoodsStatisticsInPage(page, mallOrderItem); |
| | | return adminGoodsStatisticsVos; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse deliverGoodsUpdate(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId()); |
| | | if(ObjectUtil.isEmpty(mallOrderInfo)){ |
| | | return new FebsResponse().fail().message("订单不存在,刷新后重试"); |
| | | } |
| | | Integer status = mallOrderInfo.getStatus(); |
| | | if(3 != status){ |
| | | return new FebsResponse().fail().message("订单不是待收货状态"); |
| | | } |
| | | Integer deliveryType = mallOrderInfo.getDeliveryType(); |
| | | if(2 != deliveryType){ |
| | | return new FebsResponse().fail().message("订单的配送方式不是快递"); |
| | | } |
| | | String expressNo = deliverGoodsDto.getExpressNo(); |
| | | if(StrUtil.isEmpty(expressNo)){ |
| | | return new FebsResponse().fail().message("请输入物流单号"); |
| | | } |
| | | String expressCom = deliverGoodsDto.getExpressCom(); |
| | | if(StrUtil.isEmpty(expressCom)){ |
| | | return new FebsResponse().fail().message("请输入物流公司"); |
| | | } |
| | | MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId()); |
| | | |
| | | if(ObjectUtil.isEmpty(mallExpressInfo)){ |
| | | return new FebsResponse().fail().message("请先发货"); |
| | | } |
| | | mallExpressInfo.setExpressNo(expressNo); |
| | | mallExpressInfo.setExpressCom(expressCom); |
| | | mallExpressInfoMapper.updateById(mallExpressInfo); |
| | | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse confirmOrder(AdminRefundOrderDto dto) { |
| | | Integer type = dto.getType(); |
| | | MallOrderInfo orderInfo = this.baseMapper.selectById(dto.getOrderId()); |
| | | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { |
| | | throw new FebsException("订单不存在"); |
| | | } |
| | | |
| | | if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue()) { |
| | | throw new FebsException("已提交退款, 请勿重复提交"); |
| | | } |
| | | |
| | | if (orderInfo.getStatus() != OrderStatusEnum.WAIT_SHIPPING.getValue() |
| | | && orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { |
| | | throw new FebsException("该订单不能退款"); |
| | | } |
| | | |
| | | Integer beforeStatus = orderInfo.getStatus(); |
| | | Long memberId = orderInfo.getMemberId(); |
| | | orderInfo.setStatus(OrderStatusEnum.REFUNDING.getValue()); |
| | | this.baseMapper.updateById(orderInfo); |
| | | |
| | | MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); |
| | | if (orderRefund == null) { |
| | | orderRefund = new MallOrderRefund(); |
| | | orderRefund.setOrderId(orderInfo.getId()); |
| | | orderRefund.setMemberId(memberId); |
| | | orderRefund.setType(type); |
| | | orderRefund.setRefundTime(new Date()); |
| | | orderRefund.setBeforeStatus(beforeStatus); |
| | | orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); |
| | | |
| | | // 未发货则退运费,发货了则不退 |
| | | if (beforeStatus == 2) { |
| | | orderRefund.setAmount(orderInfo.getAmount().add(orderInfo.getCarriage())); |
| | | } else { |
| | | orderRefund.setAmount(orderInfo.getAmount()); |
| | | } |
| | | orderRefund.setDesp(StrUtil.format("系统发起退款{}", orderRefund.getAmount())); |
| | | orderRefund.setReason(StrUtil.format("系统发起退款{}", orderRefund.getAmount())); |
| | | mallOrderRefundMapper.insert(orderRefund); |
| | | } else { |
| | | orderRefund.setType(type); |
| | | orderRefund.setRefundTime(new Date()); |
| | | orderRefund.setBeforeStatus(beforeStatus); |
| | | orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); |
| | | // 未发货则退运费,发货了则不退 |
| | | if (beforeStatus == 2) { |
| | | orderRefund.setAmount(orderInfo.getAmount().add(orderInfo.getCarriage())); |
| | | } else { |
| | | orderRefund.setAmount(orderInfo.getAmount()); |
| | | } |
| | | orderRefund.setDesp(StrUtil.format("系统发起退款{}", orderRefund.getAmount())); |
| | | orderRefund.setReason(StrUtil.format("系统发起退款{}", orderRefund.getAmount())); |
| | | mallOrderRefundMapper.updateById(orderRefund); |
| | | } |
| | | |
| | | |
| | | MallOrderRefundOperation operation = new MallOrderRefundOperation(); |
| | | operation.setOrderId(orderInfo.getId()); |
| | | operation.setRefundId(orderRefund.getId()); |
| | | operation.setContent(StrUtil.format("系统发起退款{}", orderRefund.getAmount())); |
| | | mallOrderRefundOperationMapper.insert(operation); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo()); |
| | | if (mallOrderInfo == null) { |
| | | return; |
| | | } |
| | | |
| | | MallExpressInfo mallExpressInfo = new MallExpressInfo(); |
| | | mallExpressInfo.setMemberId(mallOrderInfo.getMemberId()); |
| | | mallExpressInfo.setOrderId(mallOrderInfo.getId()); |
| | | mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo()); |
| | | mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom()); |
| | | mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode()); |
| | | mallExpressInfoMapper.insert(mallExpressInfo); |
| | | |
| | | mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(), |
| | | OrderStatusEnum.WAIT_FINISH.getValue(), |
| | | OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()); |
| | | // mallOrderInfo.setStatus(3); |
| | | // mallOrderInfoMapper.updateById(mallOrderInfo); |
| | | } |
| | | } |