Browse Source

新版PC系统消息;余额明细

zoujiajian 2 năm trước cách đây
mục cha
commit
619593d7dd
21 tập tin đã thay đổi với 197 bổ sung758 xóa
  1. 0 14
      netflix-dao/src/main/java/com/cyksj/mapper/order/OrderMasterDonMapper.java
  2. 1 0
      netflix-dao/src/main/java/com/cyksj/model/entity/Information.java
  3. 2 0
      netflix-dao/src/main/java/com/cyksj/model/entity/InformationClickUserRecord.java
  4. 5 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java
  5. 0 187
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderMasterDon.java
  6. 25 20
      netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java
  7. 0 54
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDetailView.java
  8. 0 141
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonBackView.java
  9. 0 106
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonView.java
  10. 0 51
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterSearchView.java
  11. 4 16
      netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementFrontView.java
  12. 0 10
      netflix-dao/src/main/resources/mapper/OrderMasterDonMapper.xml
  13. 5 21
      netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java
  14. 0 13
      netflix-service/src/main/java/com/cyksj/service/order/OrderMasterDonService.java
  15. 45 2
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  16. 0 17
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderMasterDonServiceImpl.java
  17. 10 21
      netflix-service/src/main/java/com/cyksj/service/paypal/PayPalService.java
  18. 69 80
      netflix-service/src/main/java/com/cyksj/service/stripe/StripeService.java
  19. 0 3
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserIdentCertServiceImpl.java
  20. 7 2
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserSysMsgNotifyServiceImpl.java
  21. 24 0
      netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

+ 0 - 14
netflix-dao/src/main/java/com/cyksj/mapper/order/OrderMasterDonMapper.java

@@ -1,14 +0,0 @@
-package com.cyksj.mapper.order;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.OrderMasterDon;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDonMapper
- * 创建者: JavaZou
- * 创建时间:2023/10/13 18:08
- */
-public interface OrderMasterDonMapper extends BaseMapper<OrderMasterDon> {
-	String getOrderPayTitle(Long mOid);
-}

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/Information.java

@@ -20,6 +20,7 @@ public class Information extends BaseEntity{
     /**
      * 副标题
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String subTitle;
 
     @TableField(updateStrategy = FieldStrategy.IGNORED)

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/InformationClickUserRecord.java

@@ -15,4 +15,6 @@ public class InformationClickUserRecord extends BaseEntity{
     private Long goodsId;
 
     private Long infoId;
+
+    private Long orderId;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -61,6 +61,11 @@ public class OrderDon extends BaseEntity implements Serializable {
     /** 金额 */
     private BigDecimal money;
 
+    /**
+     * 押金
+     */
+    private BigDecimal deposit;
+
     /**
      * 加购商品金额
      */

+ 0 - 187
netflix-dao/src/main/java/com/cyksj/model/entity/OrderMasterDon.java

@@ -1,187 +0,0 @@
-package com.cyksj.model.entity;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Date;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDon
- * 创建者: JavaZou
- * 创建时间:2023/10/12 10:48
- */
-@Getter
-@Setter
-public class OrderMasterDon extends BaseEntity{
-
-	/** 订单号 */
-	private String orderNo ;
-
-	/**
-	 * 微信订单号
-	 */
-	private String transactionId;
-
-
-	/** 用户id */
-	private Long userId ;
-
-	/**
-	 * openId
-	 */
-	private String openId;
-
-	/** 金额 */
-	private BigDecimal money ;
-
-	/**
-	 * 实际金额
-	 */
-	private BigDecimal realMoney;
-
-	/**
-	 * 退款金额
-	 */
-	private BigDecimal refundMoney;
-
-	/**
-	 * 海外支付金额
-	 */
-	private BigDecimal abroadMoney;
-
-	/**
-	 * 手续费
-	 */
-	private BigDecimal abroadTransactionFee;
-
-	/**
-	 * 退款原因
-	 */
-	private String refundDesc;
-
-
-	/** 支付状态 */
-	private Status status ;
-
-	/**
-	 * 支付类型
-	 */
-	private OrderMasterDon.Type type;
-
-	/**
-	 * 订单类型 1普通订单、2续费订单
-	 * 默认值为1
-	 */
-	private Integer orderType;
-
-	/**
-	 * 支付时间
-	 */
-	private Date payTime;
-
-	/**
-	 * 是否是分销订单
-	 */
-	private Boolean isDistribute;
-
-	/**
-	 * 是否是固定推广者分销
-	 */
-	private Boolean isFixedDistribute;
-
-	/**
-	 * 商户id
-	 */
-	private String shopId;
-
-	/**
-	 * 渠道链接id
-	 */
-	private Long popularizeId;
-
-	/**
-	 * 是否是推广未登录用户购买订单
-	 */
-	private Boolean isNoLogin;
-
-	/**
-	 * 是否是网页端支付 默认0移动端支付
-	 */
-	private Boolean isWebPay;
-
-	/**
-	 * 关联推广id
-	 */
-	private Long dsPopularizeId;
-
-	/**
-	 * cps后台推广id
-	 */
-	private Long cpsPopularizeId;
-
-	/**
-	 * 是否优惠加购规格
-	 */
-	private Boolean isDp;
-
-	private String payTitle;
-
-	/**
-	 * 是否是额外硬塞车票车位的订单
-	 */
-	private Boolean isOt;
-
-	/**
-	 * 店铺id
-	 */
-	private Long yhsId;
-
-	public enum Status {
-		/**
-		 * 订单状态
-		 */
-		close("已关闭"),
-		noPayment("待付款"),
-		hasPayment("已付款"),
-		transport("已发货"),
-		received("已签收"),
-		complete("已完成"),
-		refund("已退款"),
-		;
-
-		private String desc;
-
-		Status(String desc) {
-			this.desc = desc;
-		}
-
-		public String getDesc() {
-			return desc;
-		}
-	}
-
-	@Getter
-	@AllArgsConstructor
-	public enum Type{
-		WeChat("wechat","微信"),
-		ALI_PAY("zfb","支付宝"),
-		EX_CODE("exchange_code","兑换码"),
-		LOTTERY("lottery","抽奖"),
-		EQUIPMENT("equipment", "实物设备分销"),
-		PAY_EQUIPMENT("pay_equipment", "自购设备"),
-		BALANCE("balance", "余额支付"),
-		PAYPAL("paypal","paypal支付"),
-		STRIPE("stripe","stripe支付")
-		;
-		String type;
-		String desc;
-
-		public static OrderMasterDon.Type getType(String type) {
-			return Arrays.stream(OrderMasterDon.Type.values()).filter(tp -> tp.getType().equals(type)).findFirst().orElse(ALI_PAY);
-		}
-	}
-}

+ 25 - 20
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java

@@ -13,33 +13,38 @@ import java.util.List;
 @Getter
 @Setter
 public class ReqGoodsSkuSpec {
-    private String key;
+	private String key;
 
-    private List<Node> values;
+	private List<Node> values;
 
-    @Getter
-    @Setter
-    public static class Node {
-        private Integer id;
+	@Getter
+	@Setter
+	public static class Node {
+		private Integer id;
 
-        private String value;
+		private String value;
 
-        private Boolean hide;
+		private Boolean hide;
 
-        private String logo;
+		private String logo;
 
-        private BigDecimal price;
+		private BigDecimal price;
 
-        /**
-         * 预览图
-         */
-        private String previewImgs;
+		/**
+		 * 租赁押金
+		 */
+		private BigDecimal deposit;
 
-        private String benefitsList;
+		/**
+		 * 预览图
+		 */
+		private String previewImgs;
 
-        /**
-         * 原价
-         */
-        private BigDecimal benefitsPrice;
-    }
+		private String benefitsList;
+
+		/**
+		 * 原价
+		 */
+		private BigDecimal benefitsPrice;
+	}
 }

+ 0 - 54
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDetailView.java

@@ -1,54 +0,0 @@
-package com.cyksj.model.manage.views;
-
-import com.cyksj.model.entity.OrderDetailView;
-import com.cyksj.model.entity.OrderMasterDon;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
-import com.ejlchina.searcher.bean.SearchBean;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDetailView
- * 创建者: JavaZou
- * 创建时间:2023/10/16 10:23
- */
-@Getter
-@Setter
-@SearchBean(tables = "order_master_don o")
-public class OrderMasterDetailView {
-	@DbField("o.id")
-	private Long mOid;
-
-	@DbField("o.order_no")
-	private String orderNo;
-
-	@DbField("o.money")
-	private BigDecimal money;
-
-	@DbField("o.status")
-	private OrderMasterDon.Status status;
-
-	@DbField("o.type")
-	private OrderMasterDon.Type type;
-
-	@DbField("o.num")
-	private Integer num;
-
-	@DbField("o.created_time")
-	private Date createdTime;
-
-	@DbField("o.pay_time")
-	private Date payTime;
-
-	@DbField("o.pay_title")
-	private String payTitle;
-
-	@DbIgnore
-	private List<OrderDetailView> orderDetailViews;
-}

+ 0 - 141
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonBackView.java

@@ -1,141 +0,0 @@
-package com.cyksj.model.manage.views;
-
-import com.cyksj.model.entity.OrderMasterDon;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
-import com.ejlchina.searcher.bean.SearchBean;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDonBackView
- * 创建者: JavaZou
- * 创建时间:2023/10/16 11:30
- */
-@Getter
-@Setter
-@SearchBean(tables = "order_master_don o" +
-		" left join user u on o.user_id = u.id" +
-		" left join order_don_transport odt on odt.order_id = o.id",
-		where = ":condition:"
-)
-public class OrderMasterDonBackView {
-	@DbField("o.id")
-	private Long mOid;
-
-	@DbIgnore
-	private String channel;
-
-	/**
-	 * 是否是额外硬塞的虚拟车票订单
-	 */
-	@DbField("o.is_ot")
-	private Boolean isOt;
-
-	@DbField("o.order_no")
-	private String orderNo;
-
-	@DbField("o.transaction_id")
-	private String transactionId;
-
-	@DbField("o.user_id")
-	private Long userId;
-
-	@DbField("u.nickname")
-	private String nickname;
-
-	@DbField("case when u.login_phone != '' then 'phone' when u.email != '' then 'email' when u.open_id != '' then 'wechat' else 'wechat' end")
-	private String register;
-
-	/**
-	 * 登录注册手机号
-	 */
-	@DbField("u.login_phone")
-	private String loginPhone;
-
-	/**
-	 * 登录注册邮箱
-	 */
-	@DbField("u.email")
-	private String email;
-
-	@DbField("u.is_google")
-	private Boolean isGoogle;
-
-	@DbField("o.money")
-	private BigDecimal money;
-
-	@DbField("o.refund_money")
-	private BigDecimal refundMoney;
-
-	@DbField("o.status")
-	private OrderMasterDon.Status status;
-
-	@DbField("o.type")
-	private OrderMasterDon.Type type;
-
-	@DbField("o.order_type")
-	private Integer orderType;
-
-	@DbField("o.num")
-	private Integer num;
-
-	@DbField("o.created_time")
-	private Date createdTime;
-
-	@DbField("o.popularize_id")
-	private Long popularizeId;
-
-	@DbField("o.pay_time")
-	private Date payTime;
-
-	@DbField("o.is_dp")
-	private Boolean isDp;
-
-	@DbField("o.pay_title")
-	private String payTitle;
-
-	/**
-	 * 收货人
-	 */
-	@DbField("odt.receiver")
-	private String receiver;
-
-	/**
-	 * 手机号
-	 */
-	@DbField("odt.phone")
-	private String phone;
-
-	/**
-	 * 省份
-	 */
-	@DbField("odt.province")
-	private String province;
-
-	/**
-	 * 城市
-	 */
-	@DbField("odt.city")
-	private String city;
-
-	/**
-	 * 区/县
-	 */
-	@DbField("odt.district")
-	private String district;
-
-	/**
-	 * 详细地址
-	 */
-	@DbField("odt.address")
-	private String address;
-
-	@DbIgnore
-	private List<OrderDonBackView> orderDonViews;
-}

+ 0 - 106
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonView.java

@@ -1,106 +0,0 @@
-package com.cyksj.model.manage.views;
-
-import com.cyksj.model.entity.OrderDonWaybill;
-import com.cyksj.model.entity.OrderMasterDon;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
-import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDonView
- * 创建者: JavaZou
- * 创建时间:2023/10/13 17:51
- */
-@Getter
-@Setter
-@SearchBean(tables = "order_master_don o left join order_don_transport odt on odt.order_id = o.id",
-		where = ":condition:")
-public class OrderMasterDonView {
-
-	@DbField("o.id")
-	private Long mOid;
-
-	@DbField("o.order_no")
-	private String orderNo;
-
-	@DbField("o.user_id")
-	@JsonIgnore
-	private Long userId;
-
-	@DbField("o.money")
-	private BigDecimal money;
-
-	@DbField("o.status")
-	private OrderMasterDon.Status status;
-
-	@DbField("o.type")
-	private OrderMasterDon.Type type;
-
-	@DbField("o.num")
-	private Integer num;
-
-	@DbField("o.created_time")
-	private Date createdTime;
-
-	@DbField("o.pay_time")
-	private Date payTime;
-
-	@DbField("o.is_dp")
-	private Boolean isDp;
-
-	@DbField("o.pay_title")
-	private String payTitle;
-
-	/**
-	 * 收货人
-	 */
-	@DbField("odt.receiver")
-	private String receiver;
-
-	/**
-	 * 手机号
-	 */
-	@DbField("odt.phone")
-	private String phone;
-
-	/**
-	 * 省份
-	 */
-	@DbField("odt.province")
-	private String province;
-
-	/**
-	 * 城市
-	 */
-	@DbField("odt.city")
-	private String city;
-
-	/**
-	 * 区/县
-	 */
-	@DbField("odt.district")
-	private String district;
-
-	/**
-	 * 详细地址
-	 */
-	@DbField("odt.address")
-	private String address;
-
-	@DbField("o.yhs_id")
-	private Long yhsId;
-
-	@DbIgnore
-	private OrderDonWaybill waybill;
-
-	@DbIgnore
-	List<OrderDonView> orderDonViews;
-}

+ 0 - 51
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterSearchView.java

@@ -1,51 +0,0 @@
-package com.cyksj.model.manage.views;
-
-import com.cyksj.model.entity.OrderMasterDon;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.SearchBean;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterSearchView
- * 创建者: JavaZou
- * 创建时间:2023/10/16 9:38
- */
-@Getter
-@Setter
-@SearchBean(tables = "order_master_don o")
-public class OrderMasterSearchView {
-	@DbField("o.id")
-	private Long mOid;
-
-	@DbField("o.order_no")
-	private String orderNo;
-
-	@DbField("o.money")
-	private BigDecimal money;
-
-	@DbField("o.status")
-	private OrderMasterDon.Status status;
-
-	@DbField("o.type")
-	private OrderMasterDon.Type type;
-
-	@DbField("o.num")
-	private Integer num;
-
-	@DbField("o.created_time")
-	private Date createdTime;
-
-	@DbField("o.pay_time")
-	private Date payTime;
-
-	@DbField("o.pay_title")
-	private String payTitle;
-
-	@DbField("o.yhs_id")
-	private Long yhsId;
-}

+ 4 - 16
netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementFrontView.java

@@ -7,7 +7,6 @@ import com.cyksj.model.entity.HomeManagementConfig;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Getter;
 import lombok.Setter;
@@ -88,19 +87,15 @@ public class HomeManagementFrontView {
 	@DbField("g.img")
 	private String goodsImg;
 
+	@DbField("g.match_img")
+	private String matchImg;
+
 	/**
 	 * 类型
 	 */
 	@DbField("g.type")
 	private Integer goodsType;
 
-	/**
-	 * 分类
-	 * 1、AI  2、流媒体
-	 */
-	@DbField("g.category")
-	private Long category;
-
 	@DbField("g.second_type")
 	private Integer secondType;
 
@@ -128,15 +123,8 @@ public class HomeManagementFrontView {
 	/**
 	 * 已售
 	 */
-	@DbIgnore
-	private Integer sold;
-
-	/**
-	 * 虚拟销量
-	 */
 	@DbField("g.virtual_sold")
-	@JsonIgnore
-	private Integer virtualSold;
+	private Integer sold;
 
 	@DbIgnore
 	private BigDecimal specificPrice;

+ 0 - 10
netflix-dao/src/main/resources/mapper/OrderMasterDonMapper.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.cyksj.mapper.order.OrderMasterDonMapper">
-
-    <select id="getOrderPayTitle" resultType="java.lang.String">
-        select group_concat(g.title)
-        from (select distinct goods_id from order_don where m_oid = #{mOid} o)
-                 left join goods_don g on g.id = o.goods_id
-    </select>
-</mapper>

+ 5 - 21
netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java

@@ -19,7 +19,6 @@ import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.exchange.ExchangeCodeMapper;
 import com.cyksj.mapper.market.draw.LuckyDrawRecordMapper;
-import com.cyksj.mapper.order.OrderMasterDonMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelExchangeCodeData;
 import com.cyksj.model.request.ExchangeCodeReq;
@@ -70,8 +69,6 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 
 	private final OrderDonMapper orderDonMapper;
 
-	private final OrderMasterDonMapper orderMasterDonMapper;
-
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	private final LuckyDrawRecordMapper luckyDrawRecordMapper;
@@ -294,24 +291,11 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 				}
 			}
 		} else {
-			StringBuilder payTitle = new StringBuilder();
-			payTitle.append(goodsDon.getTitle());
-			payTitle.append(sku.getSpecVal());
-
-			OrderMasterDon orderMasterDon = new OrderMasterDon();
 			/* 生成订单 */
 			String donNo = SEQUENCE.nextId().toString();
-			orderMasterDon.setOrderNo(donNo);
-			orderMasterDon.setOpenId(user.getOpenId());
-			orderMasterDon.setMoney(BigDecimal.ZERO);
-			orderMasterDon.setStatus(OrderMasterDon.Status.hasPayment);
-			orderMasterDon.setYhsId(yhsId);
-			orderMasterDon.setType(OrderMasterDon.Type.getType(orderDonTye.getType()));
-			orderMasterDon.setUserId(user.getId());
-			orderMasterDon.setPayTitle(payTitle.toString());
-
-
 			orderDon = new OrderDon();
+			orderDon.setOrderNo(donNo);
+			orderDon.setOpenId(user.getOpenId());
 			orderDon.setMoney(BigDecimal.ZERO);
 			orderDon.setSkuId(sku.getId());
 			orderDon.setRelationId(relationId);
@@ -324,15 +308,15 @@ public class ExchangeCodeServiceImpl extends ServiceImpl<ExchangeCodeMapper, Exc
 				orderDon.setStatus(OrderDon.Status.hasPayment);
 			}
 			if (relation != null && relation.getStatus() == GroupsRelation.Status.outside) {
-				orderMasterDon.setIsOt(true);
 				orderDon.setIsOt(true);
 			}
 			//兑换码兑换
 			orderDon.setType(orderDonTye);
 			orderDon.setUserId(user.getId());
+			StringBuilder payTitle = new StringBuilder();
+			payTitle.append(goodsDon.getTitle());
+			payTitle.append(sku.getSpecVal());
 			orderDon.setPayTitle(payTitle.toString());
-			//主订单
-			orderMasterDonMapper.insert(orderMasterDon);
 			orderDonMapper.insert(orderDon);
 			log.info("用户{}兑换规格:{}车位成功", user.getId(), orderDon.getSkuId());
 		}

+ 0 - 13
netflix-service/src/main/java/com/cyksj/service/order/OrderMasterDonService.java

@@ -1,13 +0,0 @@
-package com.cyksj.service.order;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.cyksj.model.entity.OrderMasterDon;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDonService
- * 创建者: JavaZou
- * 创建时间:2023/10/13 18:08
- */
-public interface OrderMasterDonService extends IService<OrderMasterDon> {
-}

+ 45 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -54,6 +54,7 @@ import com.cyksj.model.dto.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.dto.ChannelBaiDuDiscountDto;
 import com.cyksj.model.manage.dto.GiftCardDto;
+import com.cyksj.model.manage.request.ReqGoodsSkuSpec;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.*;
@@ -131,6 +132,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final GoodsDonMapper goodsDonMapper;
 
+	private final GoodsDonSpecMapper goodsDonSpecMapper;
+
 	private final GroupsRelationMapper groupsRelationMapper;
 
 	private final BeanSearcher beanSearcher;
@@ -263,6 +266,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final InformationClickUserRecordMapper informationClickUserRecordMapper;
 
+	private final UserCertRecordMapper userCertRecordMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -401,6 +406,23 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			payRequest.setDonMoney(sku.getPrice());
 		}
 
+		//租赁商品
+		if (goodsDon.getType() == 4) {
+			//是否已实名认证过
+			List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
+			Integer count = userCertRecordMapper.selectCount(Wrappers.lambdaQuery(UserCertRecord.class).in(UserCertRecord::getUserId, userIdList));
+			if (count == 0) throw BusinessRuntimeException.getInstance("请您先完成实名认证..");
+
+			//租赁商品押金
+			BigDecimal rentGoodsDonDeposit = getRentGoodsDonDeposit(goodsId, sku.getSpecIds());
+			if (rentGoodsDonDeposit == null) throw BusinessRuntimeException.getInstance("应付押金异常..");
+			BigDecimal sPay = rentGoodsDonDeposit.add(sku.getPrice());
+			if (payRequest.getDonMoney().compareTo(sPay) < 0) {
+				payRequest.setDonMoney(sPay);
+			}
+			orderDon.setDeposit(rentGoodsDonDeposit);
+		}
+
 		orderDon.setMoney(payRequest.getDonMoney());
 		orderDon.setRealMoney(payRequest.getDonMoney());
 		orderDon.setOriMoney(sku.getPrice());
@@ -609,7 +631,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (payRequest.getInfoId() != null){
 			InformationClickUserRecord informationClickUserRecord = new InformationClickUserRecord();
 			informationClickUserRecord.setInfoId(payRequest.getInfoId());
-			informationClickUserRecord.setInfoId(orderDon.getId());
+			informationClickUserRecord.setOrderId(orderDon.getId());
 			informationClickUserRecordMapper.insert(informationClickUserRecord);
 		}
 		return orderDon;
@@ -2786,7 +2808,28 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
 			if (success != 1) throw BusinessRuntimeException.getInstance("您的余额不足!");
 			orderDon.setBalance(subBalance);
-			userBenefitsService.recordBalanceBySource(user.getId(), BigDecimal.valueOf(-subBalance.longValue()), UserBalanceSourceRecord.Source.payment);
 		}
 	}
+
+	/**
+	 * 获取租赁商品的应付押金
+	 */
+	private BigDecimal getRentGoodsDonDeposit(Long goodsId, String specIdsStr) throws Exception {
+		GoodsDonSpec rentGoodsDonSpec = goodsDonSpecMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSpec.class)
+				.eq(GoodsDonSpec::getGoodsId, goodsId)
+				.last("limit 1"));
+		List<Integer> specIds = Jsons.parseList(specIdsStr, Integer.class);
+		String specsJson = rentGoodsDonSpec.getSpecsJson();
+		List<ReqGoodsSkuSpec> reqGoodsSkuSpec = Jsons.parseList(specsJson, ReqGoodsSkuSpec.class);
+		for (ReqGoodsSkuSpec spec : reqGoodsSkuSpec) {
+			if (spec.getKey().contains("版本")) {
+				for (ReqGoodsSkuSpec.Node value : spec.getValues()) {
+					if (specIds.contains(value.getId())) {
+						return value.getDeposit();
+					}
+				}
+			}
+		}
+		return null;
+	}
 }

+ 0 - 17
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderMasterDonServiceImpl.java

@@ -1,17 +0,0 @@
-package com.cyksj.service.order.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.mapper.order.OrderMasterDonMapper;
-import com.cyksj.model.entity.OrderMasterDon;
-import com.cyksj.service.order.OrderMasterDonService;
-import org.springframework.stereotype.Service;
-
-/**
- * 项目名: yhlxj
- * 文件名: OrderMasterDonServiceImpl
- * 创建者: JavaZou
- * 创建时间:2023/10/13 18:08
- */
-@Service
-public class OrderMasterDonServiceImpl extends ServiceImpl<OrderMasterDonMapper, OrderMasterDon> implements OrderMasterDonService {
-}

+ 10 - 21
netflix-service/src/main/java/com/cyksj/service/paypal/PayPalService.java

@@ -1,17 +1,14 @@
 package com.cyksj.service.paypal;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.OrderMasterDon;
 import com.cyksj.model.entity.PaypalPayConfig;
 import com.cyksj.model.request.OrderRefundReq;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.order.OrderDonService;
-import com.cyksj.service.order.OrderMasterDonService;
 import com.paypal.api.payments.*;
 import com.paypal.api.payments.Currency;
 import com.paypal.base.rest.APIContext;
@@ -47,8 +44,6 @@ public class PayPalService{
 
     private final RedisService redisService;
 
-    private final OrderMasterDonService orderMasterDonService;
-
 
     private static final String SANDBOX_URL = "https://api-m.sandbox.paypal.com";
     private static final String LIVE_URL = "https://api-m.paypal.com";
@@ -69,24 +64,18 @@ public class PayPalService{
         if("approved".equals(payment.getState())){
             //paypal 交易id
             Sale sale = payment.getTransactions().get(0).getRelatedResources().get(0).getSale();
+            log.info("paypal 支付回调 订单信息:{}", sale);
             Currency transactionFee = sale.getTransactionFee();
             String transationId = sale.getId();
-
-            String mOid = payment.getTransactions().get(0).getCustom();
-            OrderMasterDon masterDon = orderMasterDonService.getById(mOid);
+            String orderId = payment.getTransactions().get(0).getCustom();
             //更新订单支付状态
-            masterDon.setTransactionId(transationId);
-            masterDon.setPayTime(new Date());
-            masterDon.setAbroadTransactionFee(new BigDecimal(transactionFee.getValue()).multiply(BigDecimal.valueOf(100)));
-            log.info("支付成功订单:"+mOid+",支付交易号:"+transationId);
-            log.info("支付成功订单:"+mOid+",返回参数:"+Jsons.toJson(payment));
-
-            //子订单
-            List<OrderDon> orderDonList = orderDonService.list(Wrappers.lambdaQuery(OrderDon.class)
-                    .eq(OrderDon::getMOid, mOid));
-            orderDonList.forEach(orderDon -> {
-                orderDonService.orderNotify(orderDon);
-            });
+            OrderDon orderDon = orderDonService.getById(orderId);
+            orderDon.setTransactionId(transationId);
+            orderDon.setPayTime(new Date());
+            orderDon.setAbroadTransactionFee(new BigDecimal(transactionFee.getValue()).multiply(BigDecimal.valueOf(100)));
+            orderDonService.orderNotify(orderDon);
+            log.info("支付成功订单:"+orderId+",支付交易号:"+transationId);
+            log.info("支付成功订单:"+orderId+",返回参数:"+Jsons.toJson(payment));
 
             THREAD_POOL.execute(()->{
                 try {
@@ -113,7 +102,7 @@ public class PayPalService{
 
             });
 
-            return redisService.getStr(RedisService.key.ABROAD_SUCCESS_URL.getName() + mOid);
+            return redisService.getStr(RedisService.key.ABROAD_SUCCESS_URL.getName() + orderId);
         }
         log.info("支付失败返回参数:"+ Jsons.toJson(payment));
         return paypalPayConfig.getCancelUrl();

+ 69 - 80
netflix-service/src/main/java/com/cyksj/service/stripe/StripeService.java

@@ -1,17 +1,14 @@
 package com.cyksj.service.stripe;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.mapper.StripePayConfigMapper;
 import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.OrderMasterDon;
 import com.cyksj.model.entity.StripePayConfig;
 import com.cyksj.model.request.OrderRefundReq;
 import com.cyksj.service.order.OrderDonService;
-import com.cyksj.service.order.OrderMasterDonService;
 import com.stripe.Stripe;
 import com.stripe.exception.StripeException;
 import com.stripe.model.*;
@@ -26,7 +23,6 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 
 /**
  * @author zwhui
@@ -45,85 +41,78 @@ public class StripeService {
 
     private final StripePayConfigMapper stripePayConfigMapper;
 
-    private final OrderMasterDonService orderMasterDonService;
-
 
 
     public String checkOutStripe(Long orderId,String successUrl) throws Exception{
-       OrderDon orderDon = orderDonService.getById(orderId);
-       BigDecimal money = orderDon.getMoney();
-       orderDon.setType(OrderDon.Type.STRIPE);
-       orderDonService.updateById(orderDon);
-       HashMap<String, String> responseData = new HashMap<String, String>();
-       if (OrderDon.Status.hasPayment.equals(orderDon.getStatus())) {
-           throw new BusinessRuntimeException(GatewayApiCode.METADATA_SYSTEM_ERROR.getCode(),"The donation has been paid");
-       }
-       StripePayConfig stripePayConfig = stripePayConfigMapper.selectById(1);
-       try {
-           Stripe.apiKey = stripePayConfig.getApiKey();
-           SessionCreateParams params =
-                   SessionCreateParams.builder()
-                           .setMode(SessionCreateParams.Mode.PAYMENT)
-                           .setSuccessUrl(successUrl)
-                           .setCancelUrl(stripePayConfig.getCancelUrl())
-                           .setClientReferenceId(orderDon.getId().toString())
-                           .addLineItem(
-                                   SessionCreateParams.LineItem.builder()
-                                           .setQuantity(1L)
-                                           .setPriceData(
-                                                   SessionCreateParams.LineItem.PriceData.builder()
-                                                           .setCurrency("USD")
-                                                           .setUnitAmount(money.longValue())
-                                                           .setProductData(
-                                                                   SessionCreateParams.LineItem.PriceData.ProductData.builder()
-                                                                           .setName("donation")
-                                                                           .setDescription("donation")
-                                                                           .build()).build()).build()).build();
-           Session session = Session.create(params);
-           responseData.put("id", session.getId());
-       } catch (StripeException e) {
-           e.printStackTrace();
-       }
-       return Jsons.toJson(responseData);
-   }
-
-
-   public void fulfillOrder(Session session) throws Exception{
-       if (null == session){
-           log.error("支付回调失败");
-           return;
-       }
-       String mOid = session.getClientReferenceId();
-       if (!"paid".equals(session.getPaymentStatus())){
-           return;
-       }
-       OrderMasterDon masterDon = orderMasterDonService.getById(mOid);
-
-       if (masterDon == null){
-           return;
-       }
-       if (!masterDon.getStatus().equals(OrderMasterDon.Status.noPayment) && !masterDon.getStatus().equals(OrderMasterDon.Status.close)) {
-           log.info("支付宝已回调,重复修改状态 id:{}", masterDon.getId());
-           return;
-       }
-       String paymentIntentId = session.getPaymentIntent();
-       PaymentIntent paymentIntent = PaymentIntent.retrieve(paymentIntentId);
-       String chargeId = paymentIntent.getLatestCharge();
-       BalanceTransaction balanceTransaction = BalanceTransaction.retrieve(Charge.retrieve(chargeId).getBalanceTransaction());
-       //更新订单支付状态
-       masterDon.setTransactionId(chargeId);
-       masterDon.setAbroadTransactionFee(BigDecimal.valueOf(balanceTransaction.getFee()));
-       masterDon.setPayTime(new Date());
-       log.info("支付成功订单:"+mOid+",支付交易号:"+chargeId);
-       log.info("支付成功订单:"+mOid+",返回参数:"+Jsons.toJson(session));
-
-       //子订单
-       List<OrderDon> orderDonList = orderDonService.list(Wrappers.lambdaQuery(OrderDon.class)
-               .eq(OrderDon::getMOid, mOid));
-       orderDonList.forEach(orderDon->{
-           orderDonService.orderNotify(orderDon);
-       });
-   }
+        OrderDon orderDon = orderDonService.getById(orderId);
+        BigDecimal money = orderDon.getMoney();
+        orderDon.setType(OrderDon.Type.STRIPE);
+        orderDonService.updateById(orderDon);
+        HashMap<String, String> responseData = new HashMap<String, String>();
+        if (OrderDon.Status.hasPayment.equals(orderDon.getStatus())) {
+            throw new BusinessRuntimeException(GatewayApiCode.METADATA_SYSTEM_ERROR.getCode(),"The donation has been paid");
+        }
+        StripePayConfig stripePayConfig = stripePayConfigMapper.selectById(1);
+        try {
+            Stripe.apiKey = stripePayConfig.getApiKey();
+            SessionCreateParams params =
+                    SessionCreateParams.builder()
+                            .setMode(SessionCreateParams.Mode.PAYMENT)
+                            .setSuccessUrl(successUrl)
+                            .setCancelUrl(stripePayConfig.getCancelUrl())
+                            .setClientReferenceId(orderDon.getId().toString())
+                            .addLineItem(
+                                    SessionCreateParams.LineItem.builder()
+                                            .setQuantity(1L)
+                                            .setPriceData(
+                                                    SessionCreateParams.LineItem.PriceData.builder()
+                                                            .setCurrency("USD")
+                                                            .setUnitAmount(money.longValue())
+                                                            .setProductData(
+                                                                    SessionCreateParams.LineItem.PriceData.ProductData.builder()
+                                                                            .setName("donation")
+                                                                            .setDescription("donation")
+                                                                            .build()).build()).build()).build();
+            Session session = Session.create(params);
+            responseData.put("id", session.getId());
+        } catch (StripeException e) {
+            e.printStackTrace();
+        }
+        return Jsons.toJson(responseData);
+    }
+
+
+    public void fulfillOrder(Session session) throws Exception{
+        if (null == session){
+            log.error("支付回调失败");
+            return;
+        }
+        String orderId = session.getClientReferenceId();
+        if (!"paid".equals(session.getPaymentStatus())){
+            return;
+        }
+        OrderDon orderDon = orderDonService.getById(orderId);
+        if (orderDon == null){
+            return;
+        }
+        if (orderDon.getStatus().equals(OrderDon.Status.hasPayment)) {
+            log.info("已回调,重复修改状态 id:{}", orderDon.getId());
+            return;
+        }
+        String paymentIntentId = session.getPaymentIntent();
+        PaymentIntent paymentIntent = PaymentIntent.retrieve(paymentIntentId);
+        String chargeId = paymentIntent.getLatestCharge();
+        BalanceTransaction balanceTransaction = BalanceTransaction.retrieve(Charge.retrieve(chargeId).getBalanceTransaction());
+        //更新订单支付状态
+
+        orderDon.setTransactionId(chargeId);
+        orderDon.setAbroadTransactionFee(BigDecimal.valueOf(balanceTransaction.getFee()));
+        orderDon.setPayTime(new Date());
+        orderDonService.orderNotify(orderDon);
+        log.info("支付成功订单:"+orderId+",支付交易号:"+chargeId);
+        log.info("支付成功订单:"+orderId+",返回参数:"+Jsons.toJson(session));
+
+    }
 
 
     public Boolean refund(OrderRefundReq refundReq, OrderDon orderDon) throws StripeException {

+ 0 - 3
netflix-service/src/main/java/com/cyksj/service/user/impl/UserIdentCertServiceImpl.java

@@ -16,7 +16,6 @@ import com.cyksj.model.entity.UserCertRecord;
 import com.cyksj.model.request.UserIndentCertReq;
 import com.cyksj.model.response.WxCertAuthTokenResp;
 import com.cyksj.redis.RedisService;
-import com.cyksj.service.market.task.BindTaskService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserIdentCertService;
 import com.tencentcloudapi.common.Credential;
@@ -44,8 +43,6 @@ public class UserIdentCertServiceImpl implements UserIdentCertService {
 
 	private final UserCertRecordMapper userCertRecordMapper;
 
-	private final BindTaskService bindTaskService;
-
 	private final UserMapper userMapper;
 
 	private final RedisService redisService;

+ 7 - 2
netflix-service/src/main/java/com/cyksj/service/user/impl/UserSysMsgNotifyServiceImpl.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.user.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.mapper.UserSysMsgNotifyMapper;
@@ -40,7 +41,9 @@ public class UserSysMsgNotifyServiceImpl extends ServiceImpl<UserSysMsgNotifyMap
 			userSet.add(e.getUserId());
 			return true;
 		}).collect(Collectors.toList());
-		userSysMsgNotifyMapper.recordUserAccountUpdateSysMsg(goodsId, skuId, collect, account, sysMsg);
+		if (CollUtil.isNotEmpty(collect)) {
+			userSysMsgNotifyMapper.recordUserAccountUpdateSysMsg(goodsId, skuId, collect, account, sysMsg);
+		}
 	}
 
 	@Override
@@ -54,6 +57,8 @@ public class UserSysMsgNotifyServiceImpl extends ServiceImpl<UserSysMsgNotifyMap
 			userSet.add(e.getUserId());
 			return true;
 		}).collect(Collectors.toList());
-		userSysMsgNotifyMapper.recordUserAccountSetSysMsg(goodsId, skuId, collect, account, sysMsg);
+		if (CollUtil.isNotEmpty(collect)) {
+			userSysMsgNotifyMapper.recordUserAccountSetSysMsg(goodsId, skuId, collect, account, sysMsg);
+		}
 	}
 }

+ 24 - 0
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -1050,6 +1050,30 @@ public class GoodsDonController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(equipmentActivityReduce);
 	}
 
+	/**
+	 * 获取租赁商品列表
+	 */
+	@GetMapping("/get/deposit")
+	public Result<? extends Object> getDepositGoods() {
+		String depositGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "deposit";
+		Object o = redisService.get(depositGoodsKey);
+		if (o == null) {
+			List<GoodsDon> depositList = beanSearcher.searchAll(GoodsDon.class, MapUtils.builder()
+					.field(GoodsDon::getType, 4)
+					.field(GoodsDon::getStatus, true)
+					.field(GoodsDon::getDeleted, true)
+					.onlySelect(GoodsDon::getId, GoodsDon::getTitle, GoodsDon::getLogo)
+					.build());
+			if (CollUtil.isEmpty(depositList)) {
+				return GatewayResponse.SUCCESS.newBuilder().toResult();
+			}
+			redisService.setNx(depositGoodsKey, depositList, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 60 * RandomUtil.randomInt(10));
+			o = redisService.get(depositGoodsKey);
+		}
+		List<GoodsDon> depositList = Jsons.parseList(o, GoodsDon.class);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(depositList);
+	}
+
 	/**
 	 * 获取pc广告配置
 	 */