Эх сурвалжийг харах

收银台功能 菜品优惠 价格修改 + 营业额导包修改

liudongzhi 2 долоо хоног өмнө
parent
commit
9e27c4e290

+ 9 - 10
alien-store/src/main/java/shop/alien/store/controller/StoreTurnoverController.java

@@ -6,12 +6,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
-import shop.alien.entity.store.vo.TurnoverDetailItemVO;
+import shop.alien.entity.store.vo.TurnoverDetailByDateVO;
 import shop.alien.entity.store.vo.TurnoverSummaryVO;
 import shop.alien.store.service.StoreTurnoverService;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-
 import java.util.Date;
+import java.util.List;
 
 @Slf4j
 @Api(tags = {"二期-营业额对账"})
@@ -49,13 +48,13 @@ public class StoreTurnoverController {
 		@ApiImplicitParam(name = "pageSize", value = "页大小", dataType = "Integer", paramType = "query")
 	})
 	@GetMapping("/details")
-	public R<java.util.List<shop.alien.entity.store.vo.TurnoverDetailByDateVO>> details(@RequestParam Integer storeId,
-	                                                                                    @RequestParam(required = false) Integer payType,
-	                                                                                    @RequestParam(required = false) Integer paymentMethod,
-	                                                                                    @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
-	                                                                                    @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
-	                                                                                    @RequestParam(defaultValue = "1") Integer pageNum,
-	                                                                                    @RequestParam(defaultValue = "10") Integer pageSize) {
+	public R<List<TurnoverDetailByDateVO>> details(@RequestParam Integer storeId,
+												   @RequestParam(required = false) Integer payType,
+												   @RequestParam(required = false) Integer paymentMethod,
+												   @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
+												   @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime,
+												   @RequestParam(defaultValue = "1") Integer pageNum,
+												   @RequestParam(defaultValue = "10") Integer pageSize) {
 		log.info("StoreTurnoverController.details(storeId={}, payType={}, paymentMethod={}, start={}, end={}, pageNum={}, pageSize={})",
 			storeId, payType, paymentMethod, startTime, endTime, pageNum, pageSize);
 		return storeTurnoverService.detailsByDate(storeId, payType, paymentMethod, startTime, endTime, pageNum, pageSize);

+ 10 - 2
alien-store/src/main/java/shop/alien/store/service/impl/StoreProductDiscountServiceImpl.java

@@ -103,7 +103,9 @@ public class StoreProductDiscountServiceImpl implements StoreProductDiscountServ
 				discount = BigDecimal.ZERO;
 			} else if (TYPE_DISCOUNT.equalsIgnoreCase(head.getDiscountType())) {
 				BigDecimal rate = head.getDiscountRate() == null ? BigDecimal.ZERO : head.getDiscountRate();
-				discount = origin.multiply(rate).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+				// 折扣价 = 原价 - 原价 * 折扣比例
+				BigDecimal discountAmount = origin.multiply(rate).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+				discount = origin.subtract(discountAmount).max(BigDecimal.ZERO);
 			} else {
 				discount = BigDecimal.ZERO;
 			}
@@ -463,7 +465,13 @@ public class StoreProductDiscountServiceImpl implements StoreProductDiscountServ
 			if (total == null) {
 				return null;
 			}
-			return total.multiply(head.getDiscountRate()).divide(java.math.BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
+			// 折扣价 = 原价 - 原价 * 折扣比例
+			java.math.BigDecimal discountAmount = total.multiply(head.getDiscountRate())
+					.divide(java.math.BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
+			java.math.BigDecimal discounted = total.subtract(discountAmount);
+			return discounted.compareTo(java.math.BigDecimal.ZERO) < 0
+					? java.math.BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)
+					: discounted.setScale(2, RoundingMode.HALF_UP);
 		}
 		return null;
 	}