Quellcode durchsuchen

feat(confirm-order): 优化积分计算逻辑,添加优惠券积分处理,新增测试文件

EvilDragon vor 3 Monaten
Ursprung
Commit
eba672cfbd

+ 22 - 2
packages/app/src/pages/home/mall/confirm-order/index.vue

@@ -24,7 +24,7 @@ import { useRouter } from '../../../../core/utils/router'
 import dayjs from 'dayjs'
 import { Coupon } from '../../../../core/libs/models'
 import CouponCard from '@/pages/common/components/coupon-card.vue'
-import { select } from 'radash'
+import { select, sort } from 'radash'
 
 const router = useRouter()
 const userStore = useUserStore()
@@ -40,7 +40,27 @@ const { data: coupons, run: setCoupons } = useRequest(() =>
     isUse: 0,
   }),
 )
-const paidPoints = computed(() => (data.value?.totalsPoints || 0).toString())
+const offerPoints = computed(() => {
+  const products = sort(data.value?.list, (it: any) => it.points).reverse()
+  let sumBrandPoints = 0
+  products.forEach((product: any) => {
+    if (selectedCoupons.value) {
+      selectedCoupons.value.forEach((coupon) => {
+        if (
+          coupon.buinessId === product.vendorId &&
+          coupon.productIds.split(',').includes(product.productId)
+        ) {
+          sumBrandPoints += product.points
+        }
+      })
+    }
+  })
+  console.log(sumBrandPoints)
+  return Number(sumBrandPoints)
+})
+const paidPoints = computed(() => {
+  return (data.value?.totalsPoints - offerPoints.value || 0).toString()
+})
 const handlePay = async () => {
   console.log(111)
 

+ 34 - 0
packages/app/src/pages/home/mall/confirm-order/test.java

@@ -0,0 +1,34 @@
+// 订单按照积分从大到小排序
+            orderVOList.sort(Comparator.comparingInt(OrderVO::getPoints).reversed());
+            for (OrderVO orderVO : orderVOList) {
+                Integer sumBrandPoints = 0;
+                // TODO 优惠券使用
+                if (CollUtil.isNotEmpty(orderCouponVOList)){
+                    for (OrderCouponVO orderCouponVO : orderCouponVOList) {
+                        //判断商品ID在优化卷ID中包含
+                        if (orderCouponVO.getBuinessId().equals(orderVO.getVendorId())
+                                && orderCouponVO.getProjectIds().contains(orderVO.getProductId())){
+                            sumBrandPoints += orderVO.getPoints();
+                            orderCouponVO.setBrandPoints(orderVO.getPoints());
+
+                            CouponUserDO couponUserDO = new CouponUserDO();
+                            couponUserDO.setId(orderCouponVO.getCouponId());
+                            couponUserDO.setIsUse(1);
+                            couponUserDO.setUserId(pointsOrderSaveReqListVO.getUserId());
+                            couponUserDO.setBrandPoints(orderCouponVO.getBrandPoints());
+                            couponUserDO.setUseTime(LocalDateTime.now());
+                            couponUserDO.setBuinessId(orderVO.getVendorId());
+                            couponUserDO.setOrderNo(orderVO.getOrderNo());
+                            couponUserService.goUpdateCouponUser(couponUserDO, false);
+                        }
+                    }
+
+
+                    //优惠总积分
+                    Integer sumBrandTotalsPoints = orderCouponVOList.stream()
+                            .map(orderCouponVO -> ObjUtil.defaultIfNull(orderCouponVO.getBrandPoints(),0))
+                            .mapToInt(Integer::intValue)
+                            .sum();
+
+                    pointsOrderSaveReqListVO.setTotalsCouponPoints(sumBrandTotalsPoints);
+                }