From 5849bdf4c1111708c0d3abaebf430069bdf804f6 Mon Sep 17 00:00:00 2001 From: xiaoqiantx223 <491437285@qq.com> Date: Tue, 23 Jul 2024 17:37:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=94=AF=E4=BB=982.0?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TPurchaseDetailsController.java | 8 +-- .../maku/maku/entity/TPurchaseDetailsEntity.java | 2 - .../maku/maku/service/TPurchaseDetailsService.java | 6 ++- .../service/impl/TPurchaseDetailsServiceImpl.java | 57 +++++++++++++++++----- .../src/main/java/net/maku/maku/vo/TCardVo.java | 10 ++++ .../java/net/maku/maku/vo/TPurchaseDetailsVO.java | 4 +- 6 files changed, 69 insertions(+), 18 deletions(-) create mode 100644 maku-server/src/main/java/net/maku/maku/vo/TCardVo.java diff --git a/maku-server/src/main/java/net/maku/maku/controller/TPurchaseDetailsController.java b/maku-server/src/main/java/net/maku/maku/controller/TPurchaseDetailsController.java index cfec48e..a05ecf8 100644 --- a/maku-server/src/main/java/net/maku/maku/controller/TPurchaseDetailsController.java +++ b/maku-server/src/main/java/net/maku/maku/controller/TPurchaseDetailsController.java @@ -13,6 +13,7 @@ import net.maku.maku.entity.TPurchaseEntity; import net.maku.maku.entity.TUserEntity; import net.maku.maku.service.TPurchaseDetailsService; import net.maku.maku.query.TPurchaseDetailsQuery; +import net.maku.maku.vo.TCardVo; import net.maku.maku.vo.TPurchaseDetailsVO; import org.springdoc.core.annotations.ParameterObject; import org.springframework.security.access.prepost.PreAuthorize; @@ -34,12 +35,13 @@ import java.util.List; public class TPurchaseDetailsController { private final TPurchaseDetailsService tPurchaseDetailsService; private final RedisCache redisCache; - @GetMapping("/buy") + @PostMapping("/buy") @Operation(summary = "购买") - public Result purchaseBook(HttpServletRequest request) { + public Result purchaseBook(HttpServletRequest request,@RequestBody TCardVo vo) { String token = request.getHeader("token"); TUserEntity entity = (TUserEntity) redisCache.get(token); - boolean isPurchased = tPurchaseDetailsService.purchaseBook(entity); +// boolean isPurchased = tPurchaseDetailsService.purchaseBook(entity); + boolean isPurchased = tPurchaseDetailsService.purchaseBook(entity,vo); if (isPurchased) { return Result.ok("购买成功"); } else { diff --git a/maku-server/src/main/java/net/maku/maku/entity/TPurchaseDetailsEntity.java b/maku-server/src/main/java/net/maku/maku/entity/TPurchaseDetailsEntity.java index 0e569e1..90b0d3d 100644 --- a/maku-server/src/main/java/net/maku/maku/entity/TPurchaseDetailsEntity.java +++ b/maku-server/src/main/java/net/maku/maku/entity/TPurchaseDetailsEntity.java @@ -1,9 +1,7 @@ package net.maku.maku.entity; import lombok.Data; -import lombok.EqualsAndHashCode; import com.baomidou.mybatisplus.annotation.*; -import java.math.BigDecimal; /** * diff --git a/maku-server/src/main/java/net/maku/maku/service/TPurchaseDetailsService.java b/maku-server/src/main/java/net/maku/maku/service/TPurchaseDetailsService.java index aaf918c..405afff 100644 --- a/maku-server/src/main/java/net/maku/maku/service/TPurchaseDetailsService.java +++ b/maku-server/src/main/java/net/maku/maku/service/TPurchaseDetailsService.java @@ -3,6 +3,7 @@ package net.maku.maku.service; import net.maku.framework.common.utils.PageResult; import net.maku.framework.mybatis.service.BaseService; import net.maku.maku.entity.TUserEntity; +import net.maku.maku.vo.TCardVo; import net.maku.maku.vo.TPurchaseDetailsVO; import net.maku.maku.query.TPurchaseDetailsQuery; import net.maku.maku.entity.TPurchaseDetailsEntity; @@ -25,7 +26,10 @@ public interface TPurchaseDetailsService extends BaseService idList); +// boolean purchaseBook(TUserEntity entity, TPurchaseDetailsVO vo); - boolean purchaseBook(TUserEntity entity); + boolean purchaseBook(TUserEntity entity, TCardVo vo); + +// boolean purchaseBook(TUserEntity entity); } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/service/impl/TPurchaseDetailsServiceImpl.java b/maku-server/src/main/java/net/maku/maku/service/impl/TPurchaseDetailsServiceImpl.java index 89dece4..7b70796 100644 --- a/maku-server/src/main/java/net/maku/maku/service/impl/TPurchaseDetailsServiceImpl.java +++ b/maku-server/src/main/java/net/maku/maku/service/impl/TPurchaseDetailsServiceImpl.java @@ -12,12 +12,14 @@ import net.maku.maku.entity.TPurchaseDetailsEntity; import net.maku.maku.entity.TUserEntity; import net.maku.maku.query.TPurchaseDetailsQuery; import net.maku.maku.service.TUserService; +import net.maku.maku.vo.TCardVo; import net.maku.maku.vo.TPurchaseDetailsVO; import net.maku.maku.dao.TPurchaseDetailsDao; import net.maku.maku.service.TPurchaseDetailsService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; /** @@ -29,7 +31,6 @@ import java.util.List; @Service @AllArgsConstructor public class TPurchaseDetailsServiceImpl extends BaseServiceImpl implements TPurchaseDetailsService { - private final TUserService tUserService; @Override public PageResult page(TPurchaseDetailsQuery query) { @@ -65,21 +66,55 @@ public class TPurchaseDetailsServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(TPurchaseDetailsEntity::getPurchaseId,entity.getId()); - TPurchaseDetailsEntity one =getOne(wrapper); - double price = one.getPrice(); - double count =one.getCount(); - double balance= entity.getBalance(); - if (balance>=price*count){ - double newBalance = balance-price*count; - entity.setBalance(newBalance); - tUserService.updateById(entity); + List list = baseMapper.selectList( + wrapper.eq(TPurchaseDetailsEntity::getPurchaseId,entity.getId())); + for (int i = 0; i < vo.getBooks().size(); i++){ + for(int j=0;j=price*count){ + double newBalance = balance-price*count; + entity.setBalance(newBalance); + tUserService.updateById(entity); + removeById(list.get(j).getId()); + } + } + } return true; } return false; } + + +// @Override +// public boolean purchaseBook(TUserEntity entity) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(TPurchaseDetailsEntity::getPurchaseId,entity.getId()); +// TPurchaseDetailsEntity one =getOne(wrapper); +// double price = one.getPrice(); +// double count =one.getCount(); +// double balance= entity.getBalance(); +// if (balance>=price*count){ +// double newBalance = balance-price*count; +// entity.setBalance(newBalance); +// tUserService.updateById(entity); +// return true; +// } +// return false; +// } +// return true;} + } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/vo/TCardVo.java b/maku-server/src/main/java/net/maku/maku/vo/TCardVo.java new file mode 100644 index 0000000..41034c5 --- /dev/null +++ b/maku-server/src/main/java/net/maku/maku/vo/TCardVo.java @@ -0,0 +1,10 @@ +package net.maku.maku.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class TCardVo { + private List books; +} diff --git a/maku-server/src/main/java/net/maku/maku/vo/TPurchaseDetailsVO.java b/maku-server/src/main/java/net/maku/maku/vo/TPurchaseDetailsVO.java index 7de279b..30898cc 100644 --- a/maku-server/src/main/java/net/maku/maku/vo/TPurchaseDetailsVO.java +++ b/maku-server/src/main/java/net/maku/maku/vo/TPurchaseDetailsVO.java @@ -24,7 +24,9 @@ public class TPurchaseDetailsVO implements Serializable { private Integer bookId; - private BigDecimal price; + private double price; + + private Integer count; } \ No newline at end of file