From ad96e226fed4cb87e6ccdf73084feeb120b2dfb0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 10 Oct 2025 10:28:52 +0800
Subject: [PATCH] feat(mall):会员信息展示优化
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++-------
1 files changed, 77 insertions(+), 15 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 0d9a167..e7e5c42 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -34,6 +34,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@@ -209,12 +210,16 @@
MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
// todo 纯积分商品一个账号限制购买一次
-// if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
-// List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
-// if (CollUtil.isNotEmpty(items)) {
-// throw new FebsException("积分商品一个账号只能购买一次");
-// }
-// }
+ if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
+ Integer cnt = item.getCnt();
+ if(1 < cnt){
+ throw new FebsException("积分商品限购一件");
+ }
+ List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId(), member.getId());
+ if (CollUtil.isNotEmpty(items)) {
+ throw new FebsException("积分商品一个账号限购一次");
+ }
+ }
if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
throw new FebsException(mallGoods.getGoodsName() + "已下架");
@@ -226,6 +231,7 @@
}
BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ BigDecimal levelOnePrice = sku.getLevelOnePrice().multiply(BigDecimal.valueOf(item.getCnt()));
//是否使用优惠卷
if(ObjectUtil.isNotEmpty(addOrderDto.getMemberCouponId())){
Long memberCouponId = addOrderDto.getMemberCouponId();
@@ -238,6 +244,7 @@
}
}
orderItem.setAmount(amount);
+ orderItem.setLevelOnePrice(levelOnePrice);
orderItem.setScoreAmount(scoreAmountMap.get(item.getSkuId()));
orderItem.setCnt(item.getCnt());
orderItem.setOrderId(orderInfo.getId());
@@ -275,10 +282,21 @@
mallMemberCoupon.setState(2);
mallMemberCouponMapper.updateById(mallMemberCoupon);
- //运费
- BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
- orderInfo.setCarriage(delivaryAmount);
+ BigDecimal delivaryAmount = BigDecimal.ZERO;
+ if(StrUtil.isEmpty(addOrderDto.getTakeUniqueCode())){
+ delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
+ orderInfo.setCarriage(delivaryAmount);
+ }else{
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(addOrderDto.getTakeUniqueCode());
+ if(ObjectUtil.isEmpty(mallTeamLeader)){
+ throw new FebsException("自提点信息异常");
+ }
+ orderInfo.setCarriage(delivaryAmount);
+ orderInfo.setTakeCode(ShareCodeUtil.toSerialCode(orderInfo.getId()) + MallUtils.getRandomNum(10));
+ orderInfo.setTakeUniqueCode(mallTeamLeader.getUniqueCode());
+ orderInfo.setDeliveryType(1);
+ }
total = total.add(delivaryAmount);
orderInfo.setAmount(total);
orderInfo.setScoreAmount(totalScoreAmount);
@@ -294,6 +312,7 @@
orderInfo.setLatitude(address.getLatitude());
orderInfo.setLongitude(address.getLongitude());
this.baseMapper.updateById(orderInfo);
+
//过期时间修改成24小时
agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 24 * 60 * 60 * 1000L);
return orderInfo.getId();
@@ -693,7 +712,7 @@
orderInfo.setPayOrderNo(payResultStr);
orderInfo.setPayMethod("支付宝支付");
- agentProducer.sendOrderReturn(orderInfo.getId());
+// agentProducer.sendOrderReturn(orderInfo.getId());
break;
case "3":
@@ -837,10 +856,31 @@
// }
// }
- OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
- MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
- if(ObjectUtil.isNotEmpty(expressInfo)){
+ OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
+ if(StrUtil.isNotEmpty(orderInfo.getTakeUniqueCode())){
+ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
+
+ if(ObjectUtil.isNotEmpty(mallTeamLeader)){
+ orderDetailVo.setLeaderName(mallTeamLeader.getName());
+ orderDetailVo.setLeaderPhone(mallTeamLeader.getPhone());
+ orderDetailVo.setAddressPic(mallTeamLeader.getAddressPic());
+ orderDetailVo.setAddressArea(mallTeamLeader.getAddressArea());
+ orderDetailVo.setDetailAddress(mallTeamLeader.getDetailAddress());
+ orderDetailVo.setLeaderLongitude(mallTeamLeader.getLongitude());
+ orderDetailVo.setLeaderLatitude(mallTeamLeader.getLatitude());
+ }
+ }
+
+ MallExpressInfo expressInfo = expressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, orderInfo.getId())
+ .eq(MallExpressInfo::getOrderNo, orderInfo.getOrderNo())
+ .last("limit 1")
+ );
+
+// MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
+ if(ObjectUtil.isNotNull(expressInfo)){
orderDetailVo.setExpressNo(expressInfo.getExpressNo());
orderDetailVo.setExpressCom(expressInfo.getExpressCom());
}
@@ -864,13 +904,29 @@
@Transactional(rollbackFor = Exception.class)
public void confirmOrder(Long id) {
MallMember member = LoginUserUtil.getLoginUser();
- MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
+// MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id);
+ MallOrderInfo orderInfo = this.baseMapper.selectOne(
+ new LambdaQueryWrapper<MallOrderInfo>()
+ .eq(MallOrderInfo::getMemberId, member.getId())
+ .eq(MallOrderInfo::getId, id)
+ .last("limit 1")
+ );
if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
throw new FebsException("订单不存在");
}
if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) {
throw new FebsException("该状态不能确认收货");
+ }
+ if(orderInfo.getDeliveryType().equals(1)){
+ List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectList(
+ new LambdaQueryWrapper<MallOrderItem>()
+ .eq(MallOrderItem::getOrderId, id)
+ .eq(MallOrderItem::getLeaderState, 0)
+ );
+ if(CollUtil.isNotEmpty(mallOrderItems)){
+ throw new FebsException("请先核销"+mallOrderItems.get(0).getGoodsName());
+ }
}
List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(null, orderInfo.getId(), 3);
@@ -1086,6 +1142,7 @@
if(CollUtil.isEmpty(mallOrderItemList)){
return new FebsResponse().fail().message("订单不存在");
}
+ int i = 0;
for(MallOrderItem mallOrderItem : mallOrderItemList){
QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("member_id",member.getId());
@@ -1106,7 +1163,11 @@
mallRefundEntity.setType(3);
}
mallRefundEntity.setState(3);
- mallRefundEntity.setAmount(mallOrderItem.getAmount());
+ if(i == 0){
+ mallRefundEntity.setAmount(mallOrderItem.getAmount().add(mallOrderInfo.getCarriage()));
+ }else{
+ mallRefundEntity.setAmount(mallOrderItem.getAmount());
+ }
mallRefundMapper.insert(mallRefundEntity);
}else{
if(mallRefund.getState() == 1){
@@ -1129,6 +1190,7 @@
apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId());
apiLeaderRefundOrderDto.setAgreeState(1);
iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto);
+ i++;
}
return new FebsResponse().success();
}
--
Gitblit v1.9.1