From 7c784492f820f2ea4ad7000ffecfba71e4233d4a Mon Sep 17 00:00:00 2001 From: weichunnien Date: Mon, 11 Dec 2023 22:56:31 +0800 Subject: [PATCH 01/11] fix: add attribute Visible for seller to pull their product from the shelves(set visible false) --- src/main/java/ntou/auction/spring/data/entity/Product.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/ntou/auction/spring/data/entity/Product.java b/src/main/java/ntou/auction/spring/data/entity/Product.java index 1742e15..b46f191 100644 --- a/src/main/java/ntou/auction/spring/data/entity/Product.java +++ b/src/main/java/ntou/auction/spring/data/entity/Product.java @@ -57,6 +57,8 @@ public class Product extends AbstractEntity { private Boolean isAuction; //競標商品已經被加進購物車? + private Boolean visible; + @NotNull @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; From 35858f7c5c157d770c29151d69265a03f0b77096 Mon Sep 17 00:00:00 2001 From: weichunnien Date: Mon, 11 Dec 2023 23:01:34 +0800 Subject: [PATCH 02/11] =?UTF-8?q?fix:=20=E8=AA=BF=E6=95=B4=E7=80=8F?= =?UTF-8?q?=E8=A6=BD=E8=88=87=E6=90=9C=E5=B0=8B=E6=A2=9D=E4=BB=B6=20?= =?UTF-8?q?=E5=BF=85=E9=A0=88=E7=82=BAvisible=20true?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ntou/auction/spring/data/service/ProductRepository.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/ntou/auction/spring/data/service/ProductRepository.java b/src/main/java/ntou/auction/spring/data/service/ProductRepository.java index 784419b..2913dcd 100644 --- a/src/main/java/ntou/auction/spring/data/service/ProductRepository.java +++ b/src/main/java/ntou/auction/spring/data/service/ProductRepository.java @@ -17,16 +17,17 @@ public interface ProductRepository extends JpaRepository, List findAllByIsFixedPriceFalseAndIsAuctionFalse(); + List findAllByVisibleTrue(); Product findById(long id); @Query("select p from Product p " + - "where p.productName like %?1%") //string-like + "where p.productName like %?1% and p.visible = true") //string-like List findAllByFuzzyProductName(@Param("productName") String productName); // ?1:productName List findBySellerID(long ID); - List findAllByProductType(String productType); + List findAllByProductTypeAndVisibleTrue(String productType); } From 7e8100926020bf310c07cc66ae76e42dc998ec26 Mon Sep 17 00:00:00 2001 From: weichunnien Date: Mon, 11 Dec 2023 23:06:09 +0800 Subject: [PATCH 03/11] =?UTF-8?q?feat:=20=E8=B3=A3=E5=AE=B6=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E4=B8=8B=E6=9E=B6=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/ProductController.java | 13 +++++++++++++ .../auction/spring/data/service/ProductService.java | 13 +++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index 39d1d49..1efb781 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -85,6 +85,7 @@ ResponseEntity> postProduct(@Valid @RequestBody PostFixedPric product.setBidIncrement(null); product.setProductAmount(request.getProductAmount()); product.setIsAuction(false); + product.setVisible(true); product.setSellerID(userService.findByUsername(userIdentity.getUsername()).getId()); product.setSellerName(userIdentity.getUsername()); @@ -113,6 +114,7 @@ ResponseEntity> postProduct(@Valid @RequestBody PostNonFixedP product.setBidIncrement(request.getBidIncrement()); product.setProductAmount(1L); product.setIsAuction(false); + product.setVisible(true); LocalDateTime now = LocalDateTime.now(); @@ -153,6 +155,17 @@ ResponseEntity> bidProduct(@Valid @RequestBody BidRequest req return ResponseEntity.ok(successMessage); } + @DeleteMapping("/{ID}") + ResponseEntity> deleteProduct(@PathVariable long ID){ + Map successMessage = Collections.singletonMap("message","成功刪除"); + + Product p = productService.getID(ID); + p.setVisible(false); + productService.store(p); + + return ResponseEntity.ok(successMessage); + } + @PostMapping("/buy") ResponseEntity> buyProduct(@Valid @RequestBody BuyProductRequest request){ diff --git a/src/main/java/ntou/auction/spring/data/service/ProductService.java b/src/main/java/ntou/auction/spring/data/service/ProductService.java index 107b7f4..5de58d6 100644 --- a/src/main/java/ntou/auction/spring/data/service/ProductService.java +++ b/src/main/java/ntou/auction/spring/data/service/ProductService.java @@ -34,8 +34,8 @@ public void delete(Long id) { } */ public List list() { - return repository.findAll(); - } + return repository.findAllByVisibleTrue(); + } //browse homepage public Product getID(Long id){ return repository.findById(id).orElse(null); @@ -80,18 +80,23 @@ public void productAmountIncrease(Long id,Long increment){ product.setProductAmount(productAmount + increment); this.store(product); } + public void deleteProduct(Long id){ + Product product = this.getID(id); + product.setVisible(false); + this.store(product); + } public List findByProductName(String productName) { return repository.findAllByFuzzyProductName(productName); } public List findByProductClassification(String productType){ - return repository.findAllByProductType(productType); + return repository.findAllByProductTypeAndVisibleTrue(productType); } public List findByProductNonFixed(){ return repository.findAllByIsFixedPriceFalseAndIsAuctionFalse(); } - public List findBySellerID(Long sellerID){return repository.findBySellerID(sellerID);}//賣家中心 + public List findBySellerID(Long sellerID){return repository.findBySellerIDAndVisibleTrue(sellerID);}//賣家中心 } From 3502bc321d4666982d4ead0be3279a5fc6dde193 Mon Sep 17 00:00:00 2001 From: weichunnien Date: Mon, 11 Dec 2023 23:06:43 +0800 Subject: [PATCH 04/11] =?UTF-8?q?fix:=20=E8=B3=A3=E5=AE=B6=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E4=B8=8D=E6=9C=83=E9=A1=AF=E7=A4=BA=E8=B3=A3=E5=AE=B6?= =?UTF-8?q?=E4=B8=8B=E6=9E=B6=E4=B9=8B=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ntou/auction/spring/data/service/ProductRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ntou/auction/spring/data/service/ProductRepository.java b/src/main/java/ntou/auction/spring/data/service/ProductRepository.java index 2913dcd..b9281b5 100644 --- a/src/main/java/ntou/auction/spring/data/service/ProductRepository.java +++ b/src/main/java/ntou/auction/spring/data/service/ProductRepository.java @@ -25,7 +25,7 @@ public interface ProductRepository extends JpaRepository, List findAllByFuzzyProductName(@Param("productName") String productName); // ?1:productName - List findBySellerID(long ID); + List findBySellerIDAndVisibleTrue(long ID); List findAllByProductTypeAndVisibleTrue(String productType); From af2a89991f5fb126996284cafcf556e0bfee9b7b Mon Sep 17 00:00:00 2001 From: weichunnien Date: Fri, 15 Dec 2023 20:40:35 +0800 Subject: [PATCH 05/11] =?UTF-8?q?feat:=20=E8=B3=A3=E5=AE=B6=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E4=B9=8B=E5=95=86=E5=93=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/ProductController.java | 81 ++++++++++++++++--- .../UpdateFixedPriceProductRequest.java | 41 ++++++++++ .../UpdateNonFixedPriceProductRequest.java | 48 +++++++++++ 3 files changed, 161 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ntou/auction/spring/data/entity/UpdateFixedPriceProductRequest.java create mode 100644 src/main/java/ntou/auction/spring/data/entity/UpdateNonFixedPriceProductRequest.java diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index 1efb781..67f4424 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -15,6 +15,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; @RestController @@ -155,16 +156,7 @@ ResponseEntity> bidProduct(@Valid @RequestBody BidRequest req return ResponseEntity.ok(successMessage); } - @DeleteMapping("/{ID}") - ResponseEntity> deleteProduct(@PathVariable long ID){ - Map successMessage = Collections.singletonMap("message","成功刪除"); - - Product p = productService.getID(ID); - p.setVisible(false); - productService.store(p); - return ResponseEntity.ok(successMessage); - } @PostMapping("/buy") ResponseEntity> buyProduct(@Valid @RequestBody BuyProductRequest request){ @@ -219,4 +211,75 @@ List getProductInSellerCenter() { return productService.findBySellerID(userService.findByUsername(userIdentity.getUsername()).getId()); } + @DeleteMapping("/{ID}") + ResponseEntity> deleteProduct(@PathVariable long ID){ + Map successMessage = Collections.singletonMap("message","成功刪除"); + + Product p = productService.getID(ID); + p.setVisible(false); + productService.store(p); + + return ResponseEntity.ok(successMessage); + } + + @PutMapping("/fixedproduct/{ID}") + ResponseEntity> putFixedProduct(@PathVariable long ID , @Valid @RequestBody UpdateFixedPriceProductRequest request){ + + Map successMessage = Collections.singletonMap("message","成功更新不二價商品"); + + Product product = productService.getID(ID); + product.setProductName(request.getProductName()); + product.setProductDescription(request.getProductDescription()); + product.setProductImage(request.getProductImage()); + product.setProductType(request.getProductType()); + product.setCurrentPrice(request.getCurrentPrice()); + product.setProductAmount(request.getProductAmount()); + + productService.store(product); + return ResponseEntity.ok(successMessage); + } + + @PutMapping("/nonfixedproduct/{ID}") + ResponseEntity> putNonFixedProduct(@PathVariable long ID , @Valid @RequestBody UpdateNonFixedPriceProductRequest request){ + + Map successMessage = Collections.singletonMap("message","成功更新競標商品"); + Map failToPostponeAuction = Collections.singletonMap("message","延長競標截止時間失敗,因為有人得標嚕"); + Map fail = Collections.singletonMap("message","截止時間錯誤"); + Map failToSetUpsetPrice = Collections.singletonMap("message","底價不得更改,因為競標還在進行中"); + Map failToSetBidIncrement = Collections.singletonMap("message","每次增加金額不得更改,因為競標還在進行中"); + + Product product = productService.getID(ID); + + product.setProductName(request.getProductName()); + product.setProductDescription(request.getProductDescription()); + product.setProductImage(request.getProductImage()); + product.setProductType(request.getProductType()); + + + Map productMap= product.getBidInfo(); + if(!productMap.isEmpty() && !Objects.equals(request.getUpsetPrice(), product.getUpsetPrice())){ //map不為空,有人出價過了。且更改的底價 != 原本底價 + return ResponseEntity.badRequest().body(failToSetUpsetPrice); + } + product.setUpsetPrice(request.getUpsetPrice()); + + if(!productMap.isEmpty() && !Objects.equals(request.getBidIncrement(), product.getBidIncrement())){ //map不為空,有人出價過了。且被更改每口叫價 + return ResponseEntity.badRequest().body(failToSetBidIncrement); + } + product.setBidIncrement(request.getBidIncrement()); + + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime dateTime = LocalDateTime.parse(request.getFinishTime(), formatter); + if(!now.isBefore(dateTime)){ + return ResponseEntity.badRequest().body(fail); + } + if(product.getIsAuction()) { //代表競標結束且有被加入購物車 + return ResponseEntity.badRequest().body(failToPostponeAuction); + } + + product.setFinishTime(dateTime); + + productService.store(product); + return ResponseEntity.ok(successMessage); + } } diff --git a/src/main/java/ntou/auction/spring/data/entity/UpdateFixedPriceProductRequest.java b/src/main/java/ntou/auction/spring/data/entity/UpdateFixedPriceProductRequest.java new file mode 100644 index 0000000..1a9637f --- /dev/null +++ b/src/main/java/ntou/auction/spring/data/entity/UpdateFixedPriceProductRequest.java @@ -0,0 +1,41 @@ +package ntou.auction.spring.data.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Lob; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UpdateFixedPriceProductRequest { + + @NotNull + @Length(min = 1, max = 128 , message = "商品名稱至多32個中文字") + private String productName; + + @NotNull + @Min (value = 1,message = "價格須為正整數") + private Long currentPrice; + + + @Length(min = 1, max = 32) + private String productType; + + @Length(min = 1, max = 20971520,message = "商品敘述過長") + private String productDescription; + + @Lob + @Column(length = 5242880) + @Length(min = 1, max = 5242880 ,message = "圖片檔案過大,請重新上傳") + private String productImage; + + @NotNull + @Min (value = 1,message = "商品至少一個") + private Long productAmount; + +} diff --git a/src/main/java/ntou/auction/spring/data/entity/UpdateNonFixedPriceProductRequest.java b/src/main/java/ntou/auction/spring/data/entity/UpdateNonFixedPriceProductRequest.java new file mode 100644 index 0000000..b7b3ade --- /dev/null +++ b/src/main/java/ntou/auction/spring/data/entity/UpdateNonFixedPriceProductRequest.java @@ -0,0 +1,48 @@ +package ntou.auction.spring.data.entity; + +import jakarta.persistence.Column; +import jakarta.persistence.Lob; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UpdateNonFixedPriceProductRequest { + + @NotNull (message="商品名稱不得為空") + @Length(min = 1, max = 128 , message = "商品名稱至多32個中文字") + private String productName; + + @NotNull + @Min (value = 1,message = "價格須為正整數") + private Long upsetPrice; //lowest requested price + + @NotNull + @Min (value = 1,message = "每口叫價須為正整數") + private Long bidIncrement; + + @NotNull (message="商品數量不得為空") + private Long productAmount; + + @NotNull + private String finishTime; + + @Length(min = 1, max = 32) + private String productType; + + @Length(min = 1, max = 20971520,message = "商品敘述過長") + private String productDescription; + + @Lob + @Column(length = 5242880) + @Length(min = 1, max = 5242880 ,message = "圖片檔案過大,請重新上傳") + private String productImage; + + + +} From e2b01fe7cb477180df1578633eca4e9f556c874c Mon Sep 17 00:00:00 2001 From: weichunnien Date: Fri, 15 Dec 2023 20:41:13 +0800 Subject: [PATCH 06/11] =?UTF-8?q?fix:=20=E5=95=86=E5=93=81=E7=AB=B6?= =?UTF-8?q?=E6=A8=99=E7=B5=90=E6=9D=9F=E5=BE=8C=20=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=B2=92=E4=BA=BA=E8=B2=B7isAuction=E9=82=84=E6=98=AF=E7=82=BA?= =?UTF-8?q?false?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ntou/auction/spring/data/service/TimerTask.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/ntou/auction/spring/data/service/TimerTask.java b/src/main/java/ntou/auction/spring/data/service/TimerTask.java index 2a7fac3..fd307c2 100644 --- a/src/main/java/ntou/auction/spring/data/service/TimerTask.java +++ b/src/main/java/ntou/auction/spring/data/service/TimerTask.java @@ -25,7 +25,7 @@ public void execute() { for (Product product : productList) { System.out.println(product.getId()); - if (product.isExpired()) { + if (product.isExpired()) { //競標結束 Map productMap= product.getBidInfo(); @@ -36,11 +36,6 @@ public void execute() { product.setIsAuction(true); productService.store(product); } - else { - product.setIsAuction(true); - productService.store(product); - } - } } } From aaf703f1bac504cd21a27f55cc5f71311599f38b Mon Sep 17 00:00:00 2001 From: weichunnien Date: Sat, 16 Dec 2023 00:32:51 +0800 Subject: [PATCH 07/11] =?UTF-8?q?fix:=20=E6=8A=8Aapi=20=E6=90=9C=E5=B0=8B?= =?UTF-8?q?=E6=94=B9=E6=88=90pathvariable(name/classification)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/ProductController.java | 24 +++++++------------ 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index 67f4424..77ca66b 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -36,25 +36,17 @@ public ProductController(ProductService productService, UserIdentity userIdentit } - @GetMapping("/product") + @GetMapping("/product/{name}") @ResponseBody - public ListgetProductName(@Valid @RequestBody ProductRequestGet request) { - - long type =Integer.parseInt(request.getSearchType()); - - if(type == 1) { //find by name - String pn = request.getProductName(); - return productService.findByProductName(pn); - } - - else if(type == 2){ //find by classification - String pt = request.getProductType(); - return productService.findByProductClassification(pt); - } - - return productService.list(); + public ListgetProductName(@PathVariable String name ) { + return productService.findByProductName(name); } + @GetMapping("/product/{classification}") + @ResponseBody + public ListgetProductClassification(@PathVariable String classification) { + return productService.findByProductClassification(classification); + } @GetMapping("/products") @ResponseBody From eae138e974b7489ef3acdd58fd2f0e8e1f6fe9dc Mon Sep 17 00:00:00 2001 From: weichunnien Date: Sat, 16 Dec 2023 00:39:49 +0800 Subject: [PATCH 08/11] =?UTF-8?q?fix:=20=E6=8A=8Aapi=20=E6=90=9C=E5=B0=8B?= =?UTF-8?q?=E8=AA=BF=E5=A5=BD=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ntou/auction/spring/controller/ProductController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index 77ca66b..d91d21d 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -36,13 +36,13 @@ public ProductController(ProductService productService, UserIdentity userIdentit } - @GetMapping("/product/{name}") + @GetMapping("/product/name/{name}") @ResponseBody public ListgetProductName(@PathVariable String name ) { return productService.findByProductName(name); } - @GetMapping("/product/{classification}") + @GetMapping("/product/classification/{classification}") @ResponseBody public ListgetProductClassification(@PathVariable String classification) { return productService.findByProductClassification(classification); From ecb70ad31121651ab5f46ece77e9bc65c831517d Mon Sep 17 00:00:00 2001 From: weichunnien Date: Sat, 16 Dec 2023 21:35:46 +0800 Subject: [PATCH 09/11] =?UTF-8?q?fix:=20=E8=AA=8D=E8=AD=89user=E5=90=8D?= =?UTF-8?q?=E5=AD=97=E3=80=81=E5=88=AA=E9=99=A4=E6=99=82=E6=8A=8A=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=95=B8=E9=87=8F=E8=A8=AD=E6=88=900?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/controller/ProductController.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index d91d21d..0d356cc 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -206,8 +206,14 @@ List getProductInSellerCenter() { @DeleteMapping("/{ID}") ResponseEntity> deleteProduct(@PathVariable long ID){ Map successMessage = Collections.singletonMap("message","成功刪除"); + Map failMessage = Collections.singletonMap("message","刪錯商品嚕"); Product p = productService.getID(ID); + + if(!Objects.equals(userService.findByUsername(userIdentity.getUsername()).getId(), p.getSellerID())){ + return ResponseEntity.badRequest().body(failMessage); + } + p.setProductAmount(0L); p.setVisible(false); productService.store(p); @@ -218,8 +224,12 @@ ResponseEntity> deleteProduct(@PathVariable long ID){ ResponseEntity> putFixedProduct(@PathVariable long ID , @Valid @RequestBody UpdateFixedPriceProductRequest request){ Map successMessage = Collections.singletonMap("message","成功更新不二價商品"); + Map failMessage = Collections.singletonMap("message","更新錯商品嚕"); Product product = productService.getID(ID); + if(!Objects.equals(userService.findByUsername(userIdentity.getUsername()).getId(), product.getSellerID())){ + return ResponseEntity.badRequest().body(failMessage); + } product.setProductName(request.getProductName()); product.setProductDescription(request.getProductDescription()); product.setProductImage(request.getProductImage()); @@ -237,11 +247,14 @@ ResponseEntity> putNonFixedProduct(@PathVariable long ID , @V Map successMessage = Collections.singletonMap("message","成功更新競標商品"); Map failToPostponeAuction = Collections.singletonMap("message","延長競標截止時間失敗,因為有人得標嚕"); Map fail = Collections.singletonMap("message","截止時間錯誤"); - Map failToSetUpsetPrice = Collections.singletonMap("message","底價不得更改,因為競標還在進行中"); - Map failToSetBidIncrement = Collections.singletonMap("message","每次增加金額不得更改,因為競標還在進行中"); - + Map failToSetUpsetPrice = Collections.singletonMap("message","底價不得更改,因為有人出價了"); + Map failToSetBidIncrement = Collections.singletonMap("message","每次增加金額不得更改,因為有人出價了"); + Map failMessage = Collections.singletonMap("message","更新錯商品嚕阿"); Product product = productService.getID(ID); + if(!Objects.equals(userService.findByUsername(userIdentity.getUsername()).getId(), product.getSellerID())){ + return ResponseEntity.badRequest().body(failMessage); + } product.setProductName(request.getProductName()); product.setProductDescription(request.getProductDescription()); product.setProductImage(request.getProductImage()); From 6305e094f6578d37990c2b4a17ad36681b4fc92d Mon Sep 17 00:00:00 2001 From: weichunnien Date: Sun, 17 Dec 2023 22:47:10 +0800 Subject: [PATCH 10/11] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E9=8C=AF?= =?UTF-8?q?=E8=AA=A4=E8=A8=8A=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ntou/auction/spring/controller/ProductController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ntou/auction/spring/controller/ProductController.java b/src/main/java/ntou/auction/spring/controller/ProductController.java index 0d356cc..71390b3 100644 --- a/src/main/java/ntou/auction/spring/controller/ProductController.java +++ b/src/main/java/ntou/auction/spring/controller/ProductController.java @@ -154,8 +154,8 @@ ResponseEntity> bidProduct(@Valid @RequestBody BidRequest req ResponseEntity> buyProduct(@Valid @RequestBody BuyProductRequest request){ Map successMessage = Collections.singletonMap("message","成功加入購物車"); - Map notEnoughMessage = Collections.singletonMap("message","買太多嚕"); - Map errorMessage = Collections.singletonMap("message","你只能將不二價商品加入購物車"); + Map notEnoughMessage = Collections.singletonMap("message","商品剩餘數量不足"); + Map errorMessage = Collections.singletonMap("message","只能將不二價商品加入購物車"); Map productNotExistMessage = Collections.singletonMap("message", "商品不存在或無法購買"); // 商品是否存在 From d2be27b46149034f9d255f877b7d7f315f0c4fbc Mon Sep 17 00:00:00 2001 From: weichunnien Date: Wed, 20 Dec 2023 20:04:28 +0800 Subject: [PATCH 11/11] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E9=8C=AF?= =?UTF-8?q?=E8=AA=A4=E8=A8=8A=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ntou/auction/spring/data/entity/Product.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/ntou/auction/spring/data/entity/Product.java b/src/main/java/ntou/auction/spring/data/entity/Product.java index b46f191..7c66363 100644 --- a/src/main/java/ntou/auction/spring/data/entity/Product.java +++ b/src/main/java/ntou/auction/spring/data/entity/Product.java @@ -1,6 +1,7 @@ package ntou.auction.spring.data.entity; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; @@ -44,6 +45,7 @@ public class Product extends AbstractEntity { //followings are non-isFixedPrice feature + @JsonIgnore @ElementCollection @CollectionTable(name = "bidInfo") private Map bidInfo;