From 4ee42556139749bf6f29d47b912da0be6c37da2a Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 15 May 2025 11:29:39 +0800
Subject: [PATCH] feat(mall): 添加商品 SKU静态属性价格字段
---
src/main/java/cc/mrbird/febs/mall/service/impl/MallInvoiceServiceImpl.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 104 insertions(+), 13 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallInvoiceServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallInvoiceServiceImpl.java
index c2d42ef..492f7de 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallInvoiceServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallInvoiceServiceImpl.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.AdminMallInvoiceDto;
import cc.mrbird.febs.mall.dto.ApiMallInvoiceDto;
import cc.mrbird.febs.mall.entity.MallInvoice;
@@ -16,15 +17,20 @@
import cc.mrbird.febs.mall.service.MallInvoiceService;
import cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo;
import cc.mrbird.febs.mall.vo.ApiMallInvoiceVo;
+import cc.mrbird.febs.pay.service.WxFaPiaoService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.io.IOException;
import java.util.List;
@Slf4j
@@ -34,6 +40,8 @@
private final MallOrderInfoMapper mallOrderInfoMapper;
private final MallOrderItemMapper mallOrderItemMapper;
+ private final RedisUtils redisUtils;
+ private final WxFaPiaoService wxFaPiaoService;
@Override
public FebsResponse getInvoices(ApiMallInvoiceDto apiMallInvoiceDto) {
MallMember member = LoginUserUtil.getLoginUser();
@@ -65,26 +73,28 @@
String payOrderNo = mallOrderInfo.getPayOrderNo();
List<MallInvoice> mallInvoices = this.baseMapper.selectByFapiaoApplyIdAndMemberId(payOrderNo, memberId);
if(CollUtil.isNotEmpty(mallInvoices)){
- continue;
+ MallInvoice mallInvoice = mallInvoices.get(0);
+ mallInvoice.setStatus(mallOrderInfo.getStatus());
+ this.baseMapper.updateById(mallInvoice);
+ }else{
+ MallInvoice mallInvoice = new MallInvoice();
+ mallInvoice.setMemberId(memberId);
+ mallInvoice.setFapiaoApplyId(payOrderNo);
+ mallInvoice.setOrderNo(mallOrderInfo.getOrderNo());
+ mallInvoice.setOrderId(mallOrderInfo.getId());
+ mallInvoice.setStatus(mallOrderInfo.getStatus());
+ mallInvoice.setAmount(mallOrderInfo.getAmount());
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId());
+ mallInvoice.setGoodsImg(mallOrderItemList.get(0).getSkuImage());
+ mallInvoice.setState(0);
+ this.baseMapper.insert(mallInvoice);
}
- MallInvoice mallInvoice = new MallInvoice();
- mallInvoice.setMemberId(memberId);
- mallInvoice.setFapiaoApplyId(payOrderNo);
- mallInvoice.setOrderNo(mallOrderInfo.getOrderNo());
- mallInvoice.setOrderId(mallOrderInfo.getId());
- mallInvoice.setStatus(mallOrderInfo.getStatus());
- mallInvoice.setAmount(mallOrderInfo.getAmount());
- List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId());
- mallInvoice.setGoodsImg(mallOrderItemList.get(0).getSkuImage());
- mallInvoice.setState(0);
- this.baseMapper.insert(mallInvoice);
/**
* 更新订单为已开票
*/
mallOrderInfo.setIsInvoice(1);
mallOrderInfoMapper.updateById(mallOrderInfo);
-
}
}
@@ -94,4 +104,85 @@
Page<MallInvoice> page = new Page<>(request.getPageNum(), request.getPageSize());
return this.baseMapper.getInvoiceListInPage(page, mallInvoiceDto);
}
+
+ @Override
+ public List<MallOrderItem> invoiceItemList() {
+ Long existToken = Long.parseLong(redisUtils.getString("ADMIN_INVOICE_ID"));
+ MallInvoice mallInvoice = this.baseMapper.selectById(existToken);
+ if(ObjectUtil.isEmpty(mallInvoice)){
+ return null;
+ }
+ return this.baseMapper.getInvoiceItemList(mallInvoice);
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse addInvoiceUrl(MallInvoice mallInvoice) {
+ Long id = mallInvoice.getId();
+ MallInvoice mallInvoiceOld = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallInvoiceOld)){
+ return new FebsResponse().fail().message("开票信息异常。");
+ }
+ Integer status = mallInvoiceOld.getStatus();
+ if(OrderStatusEnum.FINISH.getValue() != status){
+ return new FebsResponse().fail().message("订单还未完成,请勿开发票。");
+ }
+ mallInvoiceOld.setInvoiceUrl(mallInvoice.getInvoiceUrl());
+ mallInvoiceOld.setState(2);
+ this.baseMapper.updateById(mallInvoiceOld);
+ return new FebsResponse().success();
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse updateInvoiceDetail(Long id) {
+ MallInvoice mallInvoice = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallInvoice)){
+ return new FebsResponse().fail().message("开票信息异常。");
+ }
+ String fapiaoApplyId = mallInvoice.getFapiaoApplyId();
+ try {
+ String userInvoiceInfo = wxFaPiaoService.getUserInvoiceInfo(fapiaoApplyId);
+ JSONObject userInvoiceInfoJson = JSONUtil.parseObj(userInvoiceInfo);
+ mallInvoice.setType(userInvoiceInfoJson.getStr("type"));
+ mallInvoice.setName(userInvoiceInfoJson.getStr("name"));
+ mallInvoice.setTaxpayerId(userInvoiceInfoJson.getStr("taxpayer_id"));
+ mallInvoice.setAddress(userInvoiceInfoJson.getStr("address"));
+ mallInvoice.setTelephone(userInvoiceInfoJson.getStr("telephone"));
+ mallInvoice.setBankName(userInvoiceInfoJson.getStr("bank_name"));
+ mallInvoice.setBankAccount(userInvoiceInfoJson.getStr("bank_account"));
+ this.baseMapper.updateById(mallInvoice);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return new FebsResponse().success();
+ }
+
+ @Override
+ @Transactional
+ public FebsResponse updateOrderDetail(Long id) {
+ MallInvoice mallInvoice = this.baseMapper.selectById(id);
+
+ if(ObjectUtil.isEmpty(mallInvoice.getFapiaoApplyId())){
+ return new FebsResponse().fail().message("订单的支付方式不是微信支付。");
+ }
+ String fapiaoApplyId = mallInvoice.getFapiaoApplyId();
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectBypayOrderNo(fapiaoApplyId);
+ if(OrderStatusEnum.FINISH.getValue() != mallOrderInfo.getStatus()){
+ return new FebsResponse().fail().message("当前订单还未完成。");
+ }
+ /**
+ * fapiao_apply_id
+ * 发票申请单号,唯一标识一次开票行为。微信支付场景下,为微信支付订单号;非微信支付场景下,为调用【获取抬头填写链接】接口时指定的发票申请单号
+ * 对应订单信息的pay_order_no支付订单号
+ */
+ mallInvoice.setStatus(mallOrderInfo.getStatus());
+ this.baseMapper.updateById(mallInvoice);
+ /**
+ * 更新订单为已开票
+ */
+ mallOrderInfo.setIsInvoice(1);
+ mallOrderInfoMapper.updateById(mallOrderInfo);
+ return new FebsResponse().success();
+ }
}
--
Gitblit v1.9.1