Bladeren bron

Merge branch 'indep_func'

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
zoujiajian 1 jaar geleden
bovenliggende
commit
cd69c491eb

+ 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 下架
      */

+ 9 - 2
netflix-dao/src/main/java/com/cyksj/model/views/GroupsRelationIndependentView.java

@@ -19,10 +19,11 @@ import java.util.Date;
 @SearchBean(tables = "order_don o inner join groups_relation gr on gr.id = o.relation_id and gr.user_id = o.user_id" +
 		" left join groups_relation_independent_renew gnr on gnr.order_id = o.id" +
 		" inner join user u on u.id = gr.user_id" +
-		" 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 goods_don_sku sku on sku.id = gt.sku_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_val")
+	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 下架
      */

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

@@ -329,6 +329,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final OrderDonUserDiscountPopularizeRecordMapper orderDonUserDiscountPopularizeRecordMapper;
 
+	private final OrderDonIndependentRenewRecordMapper independentRenewRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -1035,6 +1037,21 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			setDistributeOrderMark(orderDon, goodsDon.getType(), userId);
 		}
 		orderDon.setRealMoney(orderDon.getMoney());
+		//独立规格续费升级
+		RenewUpgradePackage renewUpgradeIndependentPackage = null;
+		if ((payRequest.getPackageId() != null || payRequest.getOriginalOrderId() != null) && sku.getNum() == 1) {
+			renewUpgradeIndependentPackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
+					.eq(RenewUpgradePackage::getSkuId, tripsSkuId)
+					.apply("JSON_CONTAINS(upgrade_sku_ids,'\"" + renewSkuId + "\"')")
+					.eq(RenewUpgradePackage::getStatus, 1)
+					.eq(RenewUpgradePackage::getDeleted, 1)
+					.last("limit 1"));
+			if (renewUpgradeIndependentPackage == null) {
+				throw BusinessRuntimeException.getInstance("续费规格不存在");
+			}
+			BigDecimal discount = renewUpgradeIndependentPackage.getDiscount();
+			orderDon.setMoney(sku.getPrice().multiply(discount));
+		}
 		//扣除使用优惠券、余额的订单金额
 		deductOrderMoney(orderDon, couponUser, payRequest.getBalance(), user, sku.getPrice(), goodsDon.getType(), payRequest.getGcCash(), payRequest.getGcpIds(), false, null);
 		this.saveOrUpdate(orderDon);
@@ -1096,8 +1113,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				log.error("记录续费升级错误:{}", StringUtil.getErrorText(e));
 			}
 		}
+
 		//记录订单ip关联
 		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
+		if (renewUpgradeIndependentPackage != null) {
+			//独立规格续费订单记录
+			recordIndependentRenewOrderDon(orderDon, renewUpgradeIndependentPackage, groupsTrips);
+		}
 		//订单金额为0 且订单为已完成 更新虚物车票
 		if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
 			OrderDon updateOrder = orderDonMapper.selectById(orderDon.getId());
@@ -3934,6 +3956,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) {

+ 5 - 1
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -271,6 +271,9 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 					}
 				}
 				ticket.setPayTime(payTime);
+			}
+			if (ticket.getSkuNum() != null && ticket.getSkuNum() == 1) {
+
 			}
 			//设置镜像车票信息
 			setMirrorTicketInfo(ticket);
@@ -961,7 +964,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 	}
 
 	private void setRenewDiscount(RenewalView ticket) {
-		if (ticket.getIsMirror()) {
+		//镜像或者独立规格
+		if (ticket.getIsMirror() || (ticket.getSkuNum() != null && ticket.getSkuNum() == 1)) {
 			RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
 					.eq(RenewUpgradePackage::getGoodsId, ticket.getGoodsId())
 					.eq(RenewUpgradePackage::getStatus, 1)

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

@@ -971,4 +971,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;

+ 20 - 4
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -19,10 +19,7 @@ import com.cyksj.config.zfb.ZfbProductCode;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonSkuMapper;
-import com.cyksj.mapper.OrderDonRenewRecordMapper;
-import com.cyksj.mapper.OrderDonWaybillMapper;
-import com.cyksj.mapper.UserMapper;
+import com.cyksj.mapper.*;
 import com.cyksj.mapper.channel.UserPayEquipmentAvailableBenefitsMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.dto.AliPayParams;
@@ -881,4 +878,23 @@ public class OrderController {
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
+
+    /**
+     * 用户续费订单列表
+     */
+    @GetMapping("/get/renew/order")
+    public Result<List<OrderDonView>> getRenewOrder(Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+        if (relationId != null) {
+            builder.field(OrderDonView::getRelationId, relationId);
+        }
+        List<Long> userIds = UserBindRelationService.getRelationUserIdList(userId, null);
+        List<OrderDonView> list = beanSearcher.searchAll(OrderDonView.class, builder
+                .field(OrderDonView::getUserId, userIds).op(Operator.InList)
+                .field(OrderDonView::getOrderType, 2)
+                .orderBy(OrderDonView::getId).desc()
+                .build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(list);
+    }
 }