From 529ad9dd8d1876b57e852bc45b602ba3ccc8df2a Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 10 Apr 2024 17:19:08 +0800 Subject: [PATCH] 公告-首页公告调整 --- 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