diff --git a/src/main/java/com/ai/da/controller/AffiliateController.java b/src/main/java/com/ai/da/controller/AffiliateController.java index 004bc6e7..7b1b63f3 100644 --- a/src/main/java/com/ai/da/controller/AffiliateController.java +++ b/src/main/java/com/ai/da/controller/AffiliateController.java @@ -51,8 +51,17 @@ public class AffiliateController { @ApiOperation(value = "审批affiliate申请") @GetMapping("/approval") - public Response applicationApproval(@RequestParam("id") Long id, @RequestParam("isApproved")Boolean isApproved) { - return Response.success(affiliateService.applicationApproval(id, isApproved)); + public Response applicationApproval(@RequestParam("id") Long id, + @RequestParam("isApproved")Boolean isApproved, + @RequestParam("commission") Float commission) { + return Response.success(affiliateService.applicationApproval(id, isApproved, commission)); + } + + @ApiOperation(value = "更新佣金比例") + @GetMapping("/updateCommission") + public Response updateCommissionPercentage(@RequestParam("id") Long id, @RequestParam("commission") Float commission) { + affiliateService.updateCommissionPercentage(id, commission); + return Response.success("success"); } /*@ApiOperation(value = "定时计算佣金") diff --git a/src/main/java/com/ai/da/controller/StripeController.java b/src/main/java/com/ai/da/controller/StripeController.java index 261777ae..e02a1765 100644 --- a/src/main/java/com/ai/da/controller/StripeController.java +++ b/src/main/java/com/ai/da/controller/StripeController.java @@ -141,6 +141,14 @@ public class StripeController { @RequestParam(required = false) String cooperator, @RequestParam(required = false) String remark){ return Response.success(stripeService.updateCouponsInfo(id, paidCommission, cooperator, remark)); } + + @ApiOperation("删除推广码") + @GetMapping("/deletePromCode") + public Response deleteCoupon(@RequestParam Long id){ + stripeService.deleteCoupon(id); + return Response.success("success"); + } + /*@ApiOperation("临时 取消订阅") @GetMapping("/cancelSubscriptionTemp") public Response cancelSubscriptionTemp(@RequestParam String subscriptionId) { diff --git a/src/main/java/com/ai/da/mapper/primary/entity/Affiliate.java b/src/main/java/com/ai/da/mapper/primary/entity/Affiliate.java index beb52662..5b9b42d4 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/Affiliate.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/Affiliate.java @@ -14,6 +14,8 @@ public class Affiliate extends BaseEntity{ // Active(活跃) || Inactive(过期) || Pending(待审批) || Refused(拒绝) private String status; + private Float commissionPercent; + private Float totalEarnings = 0.00F; private Float monthlyEarnings = 0.00F; diff --git a/src/main/java/com/ai/da/mapper/primary/entity/ProductCoupons.java b/src/main/java/com/ai/da/mapper/primary/entity/ProductCoupons.java index 2ffe97fb..88c9ed18 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/ProductCoupons.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/ProductCoupons.java @@ -1,5 +1,7 @@ package com.ai.da.mapper.primary.entity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -37,6 +39,9 @@ public class ProductCoupons extends BaseEntity{ // 备注 private String remark; + @TableLogic + private Integer isDeleted; + public ProductCoupons(String couponId, Long redeemBy, String promotionCodeId, String promotionCode, Long maxRedemptions, float percentOff, float commissionRate, String cooperator, String remark) { this.couponId = couponId; this.redeemBy = redeemBy; diff --git a/src/main/java/com/ai/da/model/dto/SubscriptionEmailParamsDTO.java b/src/main/java/com/ai/da/model/dto/SubscriptionEmailParamsDTO.java index 43a2d3af..0e8ef223 100644 --- a/src/main/java/com/ai/da/model/dto/SubscriptionEmailParamsDTO.java +++ b/src/main/java/com/ai/da/model/dto/SubscriptionEmailParamsDTO.java @@ -22,6 +22,8 @@ public class SubscriptionEmailParamsDTO { // 费用 private String totalFee; + private String renewalFee; + // 当前订阅开始时间 private String lastOrderDate; diff --git a/src/main/java/com/ai/da/service/AffiliateService.java b/src/main/java/com/ai/da/service/AffiliateService.java index a083e9d2..e34a172b 100644 --- a/src/main/java/com/ai/da/service/AffiliateService.java +++ b/src/main/java/com/ai/da/service/AffiliateService.java @@ -18,7 +18,9 @@ public interface AffiliateService extends IService { double[] getPersonalMonthlyIncome(int year); - Boolean applicationApproval(Long id, Boolean isApproved); + Boolean applicationApproval(Long id, Boolean isApproved, Float commission); + + void updateCommissionPercentage(Long id, Float commission); void updateAffiliateInfoWithPayment(); diff --git a/src/main/java/com/ai/da/service/StripeService.java b/src/main/java/com/ai/da/service/StripeService.java index 7769fa66..7087ca1a 100644 --- a/src/main/java/com/ai/da/service/StripeService.java +++ b/src/main/java/com/ai/da/service/StripeService.java @@ -70,4 +70,6 @@ public interface StripeService { String retrievePromotionCode(String promotionCode); IPage getAllCoupons(QueryCouponsPageDTO queryCouponsPageDTO); + + void deleteCoupon(Long id); } diff --git a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java index c88251ae..ca3b87cc 100644 --- a/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AffiliateServiceImpl.java @@ -147,7 +147,7 @@ public class AffiliateServiceImpl extends ServiceImpl 0){ - // 分配新用户首次订阅所付费用的25%作为佣金 - BigDecimal commission = BigDecimal.valueOf(payerTotal).multiply(new BigDecimal("0.25")); + // 分配新用户首次订阅所付费用 预设的佣金比例 作为佣金 + BigDecimal commission = BigDecimal.valueOf(payerTotal).multiply(BigDecimal.valueOf(affiliate.getCommissionPercent() / 100)); BigDecimal monthlyEarning = BigDecimal.valueOf(affiliate.getMonthlyEarnings()).add(commission); BigDecimal unpaidEarnings = BigDecimal.valueOf(affiliate.getUnpaidEarnings()).add(commission); int visits = affiliate.getVisits() + 1; diff --git a/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java b/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java index 033d0f58..af149f35 100644 --- a/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/StripeServiceImpl.java @@ -117,6 +117,16 @@ public class StripeServiceImpl implements StripeService { default: throw new BusinessException("unknown subscription type"); } + + // 添加优惠券(只允许在订阅时使用优惠券) + String promotionCode = productPurchaseDTO.getPromotionCode(); + if (!StringUtil.isNullOrEmpty(promotionCode)){ + ProductCoupons productCoupon = checkProductCoupon(promotionCode);; + if (productCoupon != null){ + sessionBuilder.addDiscount(SessionCreateParams.Discount.builder() + .setPromotionCode(productCoupon.getPromotionCodeId()).build()); + } + } // 只有订阅时才允许使用推广码优惠 // sessionBuilder.setAllowPromotionCodes(true); break; @@ -171,16 +181,6 @@ public class StripeServiceImpl implements StripeService { .build()); sessionBuilder.putMetadata("orderId", orderId); //通过订单号关联用于检索支付信息(可选) - // 添加优惠券 - String promotionCode = productPurchaseDTO.getPromotionCode(); - if (!StringUtil.isNullOrEmpty(promotionCode)){ - ProductCoupons productCoupon = checkProductCoupon(promotionCode);; - if (productCoupon != null){ - sessionBuilder.addDiscount(SessionCreateParams.Discount.builder() - .setPromotionCode(productCoupon.getPromotionCodeId()).build()); - } - } - Session session = Session.create(sessionBuilder.build()); List paymentMethodTypes = session.getPaymentMethodTypes(); log.info("paymentMethodTypes: {}", paymentMethodTypes); @@ -194,6 +194,9 @@ public class StripeServiceImpl implements StripeService { return session.getUrl(); } catch (BusinessException e) { throw e; + } catch (InvalidRequestException e) { + log.info("创建会话出现异常:", e); + throw new BusinessException(e.getMessage().substring(0, e.getMessage().indexOf(";"))); } catch (Exception e) { log.error("创建支付会话出现异常:", e); }