Parcourir la source

独立续费规格

zoujiajian il y a 1 an
Parent
commit
567e87a925

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonIndependentRenewRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.OrderDonIndependentRenewRecord;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: OrderDonIndependentRenewRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/9/19 12:14
+ */
+public interface OrderDonIndependentRenewRecordMapper extends BaseMapper<OrderDonIndependentRenewRecord> {
+}

+ 28 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonIndependentRenewRecord.java

@@ -0,0 +1,28 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: OrderDonIndependentRenewRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/7/19 11:45
+ */
+@Getter
+@Setter
+public class OrderDonIndependentRenewRecord extends BaseEntity{
+	private Long orderId;
+
+	private Long oriSkuId;
+
+	private Long userId;
+
+	private Long packageId;
+
+	private BigDecimal discount;
+
+	private Long relationId;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/RenewUpgradePackage.java

@@ -41,6 +41,12 @@ public class RenewUpgradePackage extends BaseEntity{
      */
     private BigDecimal discount;
 
+    /**
+     * 类型
+     * 1.镜像 2.独立
+     */
+    private Integer type;
+
     /**
      * true 上架 / false 下架
      */

+ 8 - 1
netflix-dao/src/main/java/com/cyksj/model/views/GroupsRelationIndependentView.java

@@ -22,7 +22,8 @@ import java.util.Date;
 		" left join goods_don_sku sku on sku.id = o.sku_id" +
 		" left join goods_don g on g.id = o.goods_id" +
 		" left join groups_trips gt on gt.id = gr.groups_id" +
-		" left join account a on a.id = gt.account_id",
+		" left join account a on a.id = gt.account_id" +
+		" left join goods_don_sku sku2 on sku2.id = o.sku_id",
 		where = ":condition:")
 public class GroupsRelationIndependentView {
 	@DbField("gr.id")
@@ -75,4 +76,10 @@ public class GroupsRelationIndependentView {
 
 	@DbField("if(gnr.is_renew,gnr.update_time,null)")
 	private Date updateTime;
+
+	@DbField("o.sku_id")
+	private Long renewSkuId;
+
+	@DbField("sku2.spec_valu")
+	private String renewSpecVal;
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RenewUpgradePackageView.java

@@ -71,6 +71,9 @@ public class RenewUpgradePackageView {
     @DbField("up.discount")
     private BigDecimal discount;
 
+	@DbField("up.type")
+	private Integer type;
+
     /**
      * true 上架 / false 下架
      */

+ 30 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -327,6 +327,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserIpRecordMapper userIpRecordMapper;
 
+	private final OrderDonIndependentRenewRecordMapper independentRenewRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -1088,6 +1090,23 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
 			}
 		}
+		//独立规格续费升级
+		if ((payRequest.getPackageId() != null || payRequest.getOriginalOrderId() != null) && sku.getNum() == 1) {
+			RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
+					.eq(RenewUpgradePackage::getSkuId, tripsSkuId)
+					.apply("JSON_CONTAINS(sku_ids,'\"" + renewSkuId + "\"')")
+					.eq(RenewUpgradePackage::getStatus, 1)
+					.eq(RenewUpgradePackage::getDeleted, 1)
+					.last("limit 1"));
+			if (renewUpgradePackage == null) {
+				throw BusinessRuntimeException.getInstance("续费规格不存在");
+			}
+			BigDecimal discount = renewUpgradePackage.getDiscount();
+			orderDon.setMoney(sku.getPrice().multiply(discount));
+			//独立规格续费订单记录
+			recordIndependentRenewOrderDon(orderDon, renewUpgradePackage, groupsTrips);
+		}
+
 		//记录订单ip关联
 		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		//订单金额为0 且订单为已完成 更新虚物车票
@@ -3891,6 +3910,17 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDonUpgradeRenewRecordMapper.insert(orderDonUpgradeRenewRecord);
 	}
 
+	private void recordIndependentRenewOrderDon(OrderDon orderDon, RenewUpgradePackage renewUpgradePackage, GroupsTrips groupsTrips) {
+		OrderDonIndependentRenewRecord independentRenewRecord = new OrderDonIndependentRenewRecord();
+		independentRenewRecord.setOrderId(orderDon.getId());
+		independentRenewRecord.setUserId(orderDon.getUserId());
+		independentRenewRecord.setPackageId(renewUpgradePackage.getId());
+		independentRenewRecord.setDiscount(renewUpgradePackage.getDiscount());
+		independentRenewRecord.setOriSkuId(groupsTrips.getSkuId());
+		independentRenewRecord.setRelationId(orderDon.getRelationId());
+		independentRenewRecordMapper.insert(independentRenewRecord);
+	}
+
 	//镜像续费升级
 	private void handleMirrorRenew(GoodsDonSku sku, OrderDon order, GroupsTrips groupsTrips, Long relationId, Date newDate) {
 		if (sku.getGoodsId() == 18 && sku.getIsMirror() && order.getOrderType() == 2) {

+ 21 - 0
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -968,4 +968,25 @@ public class GroupRelationController {
         });
         return GatewayResponse.SUCCESS.newBuilder().toResult(renewUpgradePackageFrontViews);
     }
+
+    /**
+     * 独立规格续费套餐列表
+     */
+    @GetMapping("/get/independent/renew/skus/{skuId}")
+    public Result<List<RenewUpgradePackageFrontView>> getRenewSkus(@PathVariable Long skuId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        List<RenewUpgradePackageFrontView> renewUpgradePackageFrontViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.class, MapUtils.builder().field(RenewUpgradePackageFrontView::getSkuId, skuId).build());
+        renewUpgradePackageFrontViews.forEach(renew -> {
+            try {
+                List<Long> upgradeSkuIds = Jsons.parseList(renew.getUpgradeSkuIds(), Long.class);
+                MapBuilder builder = MapUtils.builder();
+                List<RenewUpgradePackageFrontView.RenewSkuView> renewSkuViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.RenewSkuView.class, builder
+                        .field(RenewUpgradePackageFrontView.RenewSkuView::getSkuId, upgradeSkuIds).op(Operator.InList)
+                        .build());
+                renew.setRenewSkus(renewSkuViews);
+            } catch (Exception e) {
+            }
+        });
+        return GatewayResponse.SUCCESS.newBuilder().toResult(renewUpgradePackageFrontViews);
+    }
 }

+ 1 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupRelationController.java

@@ -15,10 +15,7 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.BusinessType;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonSkuMapper;
-import com.cyksj.mapper.GroupsRelationIndependentRenewMapper;
-import com.cyksj.mapper.GroupsRelationMapper;
-import com.cyksj.mapper.OrderDonMapper;
+import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.AccountView;