Explorar o código

Merge branch 'cps_opt' into dev

zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
f17e573289
Modificáronse 59 ficheiros con 655 adicións e 1030 borrados
  1. 2 0
      netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java
  2. 0 11
      netflix-dao/src/main/java/com/cyksj/mapper/UserGalaxycoinRecordMapper.java
  3. 2 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponDistributePopularizeMapper.java
  4. 2 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponUserMapper.java
  5. 3 0
      netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeMapper.java
  6. 0 13
      netflix-dao/src/main/java/com/cyksj/mapper/manage/home/HomeManagementConfigOrderRecordMapper.java
  7. 0 14
      netflix-dao/src/main/java/com/cyksj/mapper/order/OrderMasterDonMapper.java
  8. 6 0
      netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java
  9. 0 18
      netflix-dao/src/main/java/com/cyksj/model/entity/HomeManagementConfigOrderRecord.java
  10. 0 6
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDetailView.java
  11. 4 10
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java
  12. 0 187
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderMasterDon.java
  13. 0 5
      netflix-dao/src/main/java/com/cyksj/model/entity/User.java
  14. 0 36
      netflix-dao/src/main/java/com/cyksj/model/entity/UserGalaxycoinRecord.java
  15. 7 1
      netflix-dao/src/main/java/com/cyksj/model/excel/ExcelPrepareAccountData.java
  16. 5 0
      netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSpuInsert.java
  17. 6 0
      netflix-dao/src/main/java/com/cyksj/model/manage/views/GoodsDonViewer.java
  18. 1 4
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonBackView.java
  19. 0 3
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonView.java
  20. 0 54
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDetailView.java
  21. 0 141
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonBackView.java
  22. 0 106
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterDonView.java
  23. 0 51
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderMasterSearchView.java
  24. 27 0
      netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderDataStatisticsView.java
  25. 40 0
      netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderView.java
  26. 6 0
      netflix-dao/src/main/java/com/cyksj/model/views/GoodsFrontListView.java
  27. 4 0
      netflix-dao/src/main/java/com/cyksj/model/views/GroupsDataStatisticsView.java
  28. 1 1
      netflix-dao/src/main/java/com/cyksj/model/views/HomeManagementFrontView.java
  29. 1 1
      netflix-dao/src/main/java/com/cyksj/model/views/InformationView.java
  30. 20 0
      netflix-dao/src/main/java/com/cyksj/model/views/RealGoodsSourceData.java
  31. 6 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributePopularizeView.java
  32. 0 5
      netflix-dao/src/main/java/com/cyksj/model/views/UserPersonalView.java
  33. 6 0
      netflix-dao/src/main/java/com/cyksj/model/views/YhShopGoodsFrontView.java
  34. 2 2
      netflix-dao/src/main/resources/mapper/CorpCustomerAcquisitionLinkMapper.xml
  35. 7 0
      netflix-dao/src/main/resources/mapper/CouponDistributePopularizeMapper.xml
  36. 23 0
      netflix-dao/src/main/resources/mapper/CouponUserMapper.xml
  37. 17 0
      netflix-dao/src/main/resources/mapper/OrderDonMapper.xml
  38. 0 10
      netflix-dao/src/main/resources/mapper/OrderMasterDonMapper.xml
  39. 16 0
      netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml
  40. 4 0
      netflix-service/src/main/java/com/cyksj/service/coupon/CouponFontService.java
  41. 20 0
      netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java
  42. 5 21
      netflix-service/src/main/java/com/cyksj/service/exchange/impl/ExchangeCodeServiceImpl.java
  43. 23 0
      netflix-service/src/main/java/com/cyksj/service/mange/statistics/impl/StatisticsDataServiceImpl.java
  44. 0 13
      netflix-service/src/main/java/com/cyksj/service/order/OrderMasterDonService.java
  45. 0 17
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderMasterDonServiceImpl.java
  46. 9 21
      netflix-service/src/main/java/com/cyksj/service/paypal/PayPalService.java
  47. 11 2
      netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java
  48. 69 80
      netflix-service/src/main/java/com/cyksj/service/stripe/StripeService.java
  49. 3 0
      netflix-service/src/main/java/com/cyksj/service/sys/impl/SysConfigChangeRecordServiceImpl.java
  50. 0 11
      netflix-service/src/main/java/com/cyksj/service/user/UserGalaxycoinRecordService.java
  51. 0 3
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserBenefitsServiceImpl.java
  52. 0 17
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserGalaxycoinRecordServiceImpl.java
  53. 17 0
      netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java
  54. 2 135
      netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsBackLoginController.java
  55. 208 0
      netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsDistribtueDataController.java
  56. 32 0
      netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsPopularizeController.java
  57. 23 25
      netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java
  58. 1 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java
  59. 14 6
      netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java

@@ -70,4 +70,6 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 	Page<UserOrderDetailView> getTagUserDataPage(@Param("page") Page<UserOrderDetailView> page, @Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
 	Page<CorpTagUserOrderDataView> getTagUserTimeOrderData(@Param("page") Page<Object> objectPage, @Param("tagIdStr") String tagIdStr, @Param("toDate") String toDate, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+	List<RealGoodsSourceData> getRealGoodsSourceData(@Param("startDate") String startDate, @Param("endDate") String endDate);
 }

+ 0 - 11
netflix-dao/src/main/java/com/cyksj/mapper/UserGalaxycoinRecordMapper.java

@@ -1,11 +0,0 @@
-package com.cyksj.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.UserGalaxycoinRecord;
-
-/**
- * @author zwhui
- * @date 2023/10/12 10:23
- */
-public interface UserGalaxycoinRecordMapper extends BaseMapper<UserGalaxycoinRecord> {
-}

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponDistributePopularizeMapper.java

@@ -23,4 +23,6 @@ public interface CouponDistributePopularizeMapper extends BaseMapper<CouponDistr
 	Coupon selectDiscountCouponByUserId(@Param("distributeId") Long distributeId, @Param("skuId") Long skuId);
 
 	void batchInsert(@Param("list") List<CouponDistributePopularize> couponRelates);
+
+	String getCouponCodeByUid(long userId);
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponUserMapper.java

@@ -29,4 +29,6 @@ public interface CouponUserMapper extends BaseMapper<CouponUser> {
 	CouponUserView getNewUserWelfareCouponsByUserId(@Param("userId") long userId, @Param("channel") CouponUser.Channel channel, @Param("now") DateTime now);
 
 	CouponUser getCouponByCouponUserId(Long couponUserId);
+
+	CouponUserView getCouponDetailById(@Param("userId") long userId, @Param("couponId") Long couponId);
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.DistributeMoneyApply;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserDistribute;
+import com.cyksj.model.views.CpsOrderDataStatisticsView;
 import com.cyksj.model.views.UserDistributeViews;
 import org.apache.ibatis.annotations.Param;
 
@@ -34,4 +35,6 @@ public interface UserDistributeMapper extends BaseMapper<UserDistribute> {
 	Integer getDistributeGoodsRateByUidAndGid(@Param("userId") Long userId, @Param("goodsId") Long goodsId);
 
 	DistributeMoneyApply selectRelationBusiness(Long userId);
+
+	CpsOrderDataStatisticsView selectOrderBrokenLineMoney(@Param("cpsUserId") long cpsUserId, @Param("first") String first, @Param("end") String end);
 }

+ 0 - 13
netflix-dao/src/main/java/com/cyksj/mapper/manage/home/HomeManagementConfigOrderRecordMapper.java

@@ -1,13 +0,0 @@
-package com.cyksj.mapper.manage.home;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.cyksj.model.entity.HomeManagementConfigOrderRecord;
-
-/**
- * 项目名: yhlxj
- * 文件名: HomeManagementConfigOrderRecord
- * 创建者: JavaZou
- * 创建时间:2023/10/18 11:32
- */
-public interface HomeManagementConfigOrderRecordMapper extends BaseMapper<HomeManagementConfigOrderRecord> {
-}

+ 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);
-}

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

@@ -47,6 +47,12 @@ public class GoodsDon extends BaseEntity {
      */
     private String img;
 
+    /**
+     * 视频封面
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String videoCover;
+
 
     /**
      * true 上架 / false 下架

+ 0 - 18
netflix-dao/src/main/java/com/cyksj/model/entity/HomeManagementConfigOrderRecord.java

@@ -1,18 +0,0 @@
-package com.cyksj.model.entity;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 项目名: yhlxj
- * 文件名: HomeManagementConfigOrderRecord
- * 创建者: JavaZou
- * 创建时间:2023/10/18 11:31
- */
-@Getter
-@Setter
-public class HomeManagementConfigOrderRecord {
-	private Long configId;
-
-	private Long mOid;
-}

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

@@ -25,12 +25,6 @@ public class OrderDetailView {
 	@DbField("o.id")
 	private Long id;
 
-	/**
-	 * 主订单id
-	 */
-	@DbField("o.m_oid")
-	private Long mOid;
-
 	/**
 	 * 商品id
 	 */

+ 4 - 10
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -22,8 +22,6 @@ import java.util.List;
 @Setter
 public class OrderDon extends BaseEntity implements Serializable {
 
-    private Long mOid;
-
     /**
      * 座位id
      */
@@ -243,11 +241,6 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private BigDecimal balance;
 
-    /**
-     * 银河币
-     */
-    private BigDecimal galaxycoin;
-
     /**
      * 付款说明
      */
@@ -335,7 +328,6 @@ public class OrderDon extends BaseEntity implements Serializable {
         EQUIPMENT("equipment", "实物设备分销"),
         PAY_EQUIPMENT("pay_equipment", "自购设备"),
         BALANCE("balance", "余额支付"),
-        GALAXYCOIN("galaxycoin", "银河币支付"),
         PAYPAL("paypal","paypal支付"),
         STRIPE("stripe","stripe支付")
         ;
@@ -362,8 +354,10 @@ public class OrderDon extends BaseEntity implements Serializable {
     @Getter
     public enum LabelSource {
         red_book("小红书"),
-        guang_dian("广点通"),
-        tik_tok("抖音付费"),
+        tik_tok("抖音"),
+        bz("B站"),
+        py("朋友"),
+        yh("银河官网"),
         ;
         String desc;
 

+ 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);
-		}
-	}
-}

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

@@ -67,11 +67,6 @@ public class User extends BaseEntity implements Serializable{
      */
     private BigDecimal yhsMoney;
 
-    /**
-     * 银河币
-     */
-    private BigDecimal galaxycoin;
-
     /**
      * 推广id
      */

+ 0 - 36
netflix-dao/src/main/java/com/cyksj/model/entity/UserGalaxycoinRecord.java

@@ -1,36 +0,0 @@
-package com.cyksj.model.entity;
-
-import com.ejlchina.searcher.bean.SearchBean;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-
-/**
- * @author zwhui
- * @date 2023/10/12 09:58
- */
-@Getter
-@Setter
-@SearchBean(tables = "user_galaxycoin_record")
-public class UserGalaxycoinRecord extends BaseEntity{
-    private Long userId;
-
-    private BigDecimal galaxycoin;
-
-    private String remark;
-
-    private Source source;
-
-    @Getter
-    public enum Source {
-        payment("下单"),
-        refund("订单退款");
-        String desc;
-
-        Source(String desc) {
-            this.desc = desc;
-        }
-    }
-
-}

+ 7 - 1
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelPrepareAccountData.java

@@ -2,7 +2,6 @@ package com.cyksj.model.excel;
 
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.ejlchina.searcher.bean.DbField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -18,4 +17,11 @@ public class ExcelPrepareAccountData {
      */
     @ExcelProperty("密码")
     private String password;
+
+
+    /**
+     * 银行卡号
+     */
+    @ExcelProperty("银行卡号")
+    private String bankCard;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSpuInsert.java

@@ -33,6 +33,11 @@ public class ReqGoodsSpuInsert {
 
     private String img;
 
+    /**
+     * 视频封面
+     */
+    private String videoCover;
+
     private String tags;
 
     /**

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/GoodsDonViewer.java

@@ -54,6 +54,12 @@ public class GoodsDonViewer {
     @DbField("img")
     private String img;
 
+    /**
+     * 视频封面
+     */
+    @DbField("g.video_cover")
+    private String videoCover;
+
 
     /**
      * true 上架 / false 下架

+ 1 - 4
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonBackView.java

@@ -32,9 +32,6 @@ public class OrderDonBackView {
 	@DbField("o.id")
 	private Long id;
 
-	@DbField("o.m_oid")
-	private Long mOid;
-
 	@DbIgnore
 	private String channel;
 
@@ -265,4 +262,4 @@ public class OrderDonBackView {
 
 	@DbIgnore
 	private List<GoodsDonSkuView> benefitsViews;
-}
+}

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

@@ -29,9 +29,6 @@ public class OrderDonView {
     @DbField("o.id")
     private Long id;
 
-    @DbField("o.m_oid")
-    private Long mOid;
-
     @DbField("o.relation_id")
     private Long relationId;
 

+ 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;
-}

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderDataStatisticsView.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CpsOrderDataStatisticsView
+ * 创建者: JavaZou
+ * 创建时间:2024/3/21 14:54
+ */
+@Getter
+@Setter
+public class CpsOrderDataStatisticsView {
+
+	private String firstDate;
+
+	private String lastDate;
+
+	/**
+	 * 平台订单数据
+	 */
+	private Map<Long, List<CpsOrderView>> goodsData;
+}

+ 40 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderView.java

@@ -0,0 +1,40 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CpsOrderView
+ * 创建者: JavaZou
+ * 创建时间:2024/3/21 14:55
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select o.id,o.goods_id,o.money,o.is_dp,o.ori_money,o.created_time from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od left join goods_don g on g.id = od.goods_id" +
+		" inner join distribute_waiting_send_points dp on dp.order_id = od.id",
+		groupBy = "od.goods_id,g.title,date_format(od.created_time,'%Y-%m-%d')")
+public class CpsOrderView {
+
+	@DbField("od.goods_id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("cast(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money))/100 as decimal(10,2))")
+	private BigDecimal distributeOrderMoney;
+
+	@DbField("count(od.id)")
+	private Integer orders;
+
+	/**
+	 * 日期
+	 */
+	@DbField("date_format(od.created_time,'%Y-%m-%d')")
+	private String date;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsFrontListView.java

@@ -51,6 +51,12 @@ public class GoodsFrontListView {
 	@DbField("g.img")
 	private String img;
 
+	/**
+	 * 视频封面
+	 */
+	@DbField("g.video_cover")
+	private String videoCover;
+
 	@DbField("g.banner")
 	private String banner;
 

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GroupsDataStatisticsView.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 项目名: yhlxj2
@@ -91,4 +92,7 @@ public class GroupsDataStatisticsView {
 	 * 解绑渠道 设备销售金额
 	 */
 	private BigDecimal unBIndGroupsEpOrderMoney;
+
+	private List<RealGoodsSourceData> realGoodsSourceDataList;
+
 }

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

@@ -55,7 +55,7 @@ public class HomeManagementFrontView {
 	private HomeManagementConfig.AdType adType;
 
 	@DbField("hc.rg_type")
-	private HomeManagementConfig.AdType rgType;
+	private HomeManagementConfig.RgType rgType;
 
 	@DbField("hc.rg_price")
 	private BigDecimal rgPrice;

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

@@ -111,7 +111,7 @@ public class InformationView {
     /**
      * 下单数
      */
-    @DbField("select count(*) from information_click_user_record ir left join order_don o on o.id = ir.order_id where ir.info_id = i.id and o.status not in ('close','noPayment')")
+    @DbField("select count(*) from information_click_user_record ir left join order_don o on o.id = ir.order_id where ir.info_id = i.id and o.status not in ('close','noPayment','refund')")
     private Integer orderNum;
 
     /**

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RealGoodsSourceData.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.views;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Setter
+@Getter
+@AllArgsConstructor
+@NoArgsConstructor
+public class RealGoodsSourceData {
+	private String labelSource;
+
+	private Integer orders;
+
+	private BigDecimal orderMoney;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributePopularizeView.java

@@ -53,4 +53,10 @@ public class UserDistributePopularizeView {
 
 	@DbField("dp.created_time")
 	private Date createTime;
+
+	/**
+	 * 优惠码
+	 */
+	@DbIgnore
+	private String couponCode;
 }

+ 0 - 5
netflix-dao/src/main/java/com/cyksj/model/views/UserPersonalView.java

@@ -50,9 +50,4 @@ public class UserPersonalView {
 	private Integer numOfGiftCard;
 
 	private String phone;
-
-	/**
-	 * 银河币
-	 */
-	private BigDecimal galaxycoin;
 }

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/YhShopGoodsFrontView.java

@@ -52,6 +52,12 @@ public class YhShopGoodsFrontView {
 	@DbField("g.img")
 	private String img;
 
+	/**
+	 * 视频封面
+	 */
+	@DbField("g.video_cover")
+	private String videoCover;
+
 	@DbField("g.banner")
 	private String banner;
 

+ 2 - 2
netflix-dao/src/main/resources/mapper/CorpCustomerAcquisitionLinkMapper.xml

@@ -13,11 +13,11 @@
     </select>
 
     <select id="selectAcLinkCorpTemplateCouponIdsByTagIds" resultType="java.lang.Long">
-        select distinct ct.coupon_id from (select msg_id from corp_customer_acquisition_link
+        select distinct ct.coupon_ids from (select msg_id from corp_customer_acquisition_link
         where msg_id != 0 and tags != '[]' and
         <foreach collection="tagIds" item="item" open="(" separator="OR" close=")">
             JSON_CONTAINS(tags, '"${item}"')
         </foreach>)s inner join corp_welcome_template ct on ct.id = s.msg_id
-        where ct.coupon_id is not null
+        where ct.coupon_ids is not null
     </select>
 </mapper>

+ 7 - 0
netflix-dao/src/main/resources/mapper/CouponDistributePopularizeMapper.xml

@@ -10,4 +10,11 @@
             (#{item.couponId},#{item.distributeId},#{item.exCode},now(),now())
         </foreach>
     </insert>
+
+    <select id="getCouponCodeByUid" resultType="java.lang.String">
+        select group_concat(cp.ex_code)
+        from (select id from user_distribute ud where user_id = #{userId} and deleted is true limit 1) s
+                 inner join coupon_distribute_popularize cp on cp.distribute_id = s.id
+            and cp.deleted is true and cp.is_general is false
+    </select>
 </mapper>

+ 23 - 0
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -210,4 +210,27 @@
         from coupon_user
         where id = #{couponUserId} limit 1
     </select>
+
+    <select id="getCouponDetailById" resultType="com.cyksj.model.views.CouponUserView">
+        select cu.*,
+               c.name,
+               c.goods_type,
+               c.type,
+               c.reduce_condition,
+               c.reduce_money,
+               c.discount,
+               c.use_scope,
+               c.goods_sku_ids,
+               cu.valid_start_time,
+               cu.valid_end_time,
+               unix_timestamp(cu.valid_end_time) * 1000 as validEndTimestamp
+        from (select coupon_id,
+                     valid_start_time,
+                     valid_end_time,
+                     status as couponUserStatus
+              from `coupon_user`
+              where user_id = #{userId}
+                and coupon_id = #{couponId} limit 1) cu
+                 inner join coupon c on c.id = cu.coupon_id
+    </select>
 </mapper>

+ 17 - 0
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -395,4 +395,21 @@
         left join goods_don_sku sku on sku.id = o.sku_id
         order by o.created_time desc
     </select>
+
+    <select id="getRealGoodsSourceData" resultType="com.cyksj.model.views.RealGoodsSourceData">
+        select label_source,
+               count(*) as orders,
+               sum(money) as orderMoney
+        from order_don
+        where goods_id = 15
+        and status not in ('close', 'noPayment', 'refund')
+        <if test="startDate != null">
+            and created_time >= #{startDate}
+        </if>
+        <if test="endDate != null">
+            and created_time &lt; #{endDate}
+        </if>
+        and label_source != ''
+        group by label_source
+    </select>
 </mapper>

+ 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>

+ 16 - 0
netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml

@@ -97,4 +97,20 @@
         from (select business_id from user_distribute where user_id = #{userId} and deleted is true limit 1) ud
                  inner join cms_user cu on cu.id = ud.business_id
     </select>
+
+    <select id="selectOrderBrokenLineMoney" resultType="com.cyksj.model.views.CpsOrderDataStatisticsView">
+        select min(curdate) as firstDate,max(curdate) as lastDate from (select date_format(od.created_time,'%Y-%m-%d') as curdate
+        from (select o.id,o.goods_id,o.created_time from order_don o inner join
+        (select user_id from user_distribute_shared where shared_id = #{cpsUserId}) us on us.user_id = o.user_id where
+        o.is_fixed_distribute is true and o.status not in ('close','noPayment')
+        <if test="first != null">
+            and o.created_time >= #{first}
+        </if>
+        <if test="end != null">
+            and o.created_time &lt; #{end}
+        </if>)od
+        left join goods_don g on g.id = od.goods_id
+        inner join distribute_waiting_send_points dp on dp.order_id = od.id
+        group by date_format(od.created_time,'%Y-%m-%d'))s
+    </select>
 </mapper>

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/coupon/CouponFontService.java

@@ -66,4 +66,8 @@ public interface CouponFontService {
 	 * 新用户福利优惠券
 	 */
 	CouponUserView getNewUserWelfareCoupons(long userId, DateTime now);
+
+	CouponUserView getCouponDetailById(long userId, Long couponId);
+
+	CouponUserView receiveCoupon(long userId, Long couponId);
 }

+ 20 - 0
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -364,4 +364,24 @@ public class CouponFontServiceImpl implements CouponFontService {
 	public CouponUserView getNewUserWelfareCoupons(long userId, DateTime now) {
 		return couponUserMapper.getNewUserWelfareCouponsByUserId(userId, CouponUser.Channel.new_welfare, now);
 	}
+
+	@Override
+	public CouponUserView getCouponDetailById(long userId, Long couponId) {
+		CouponUserView couponUserView = couponUserMapper.getCouponDetailById(userId, couponId);
+		if (couponUserView != null) {
+			String str = couponSkuMapper.selectGoodsSkuStr(couponUserView.getCouponId());
+			couponUserView.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
+		}
+		return couponUserView;
+	}
+
+	@Override
+	public CouponUserView receiveCoupon(long userId, Long couponId) {
+		try {
+			receiveCouponUser(couponId, userId, CouponUser.Channel.manual);
+		} catch (Exception e) {
+			return null;
+		}
+		return getCouponDetailById(userId, couponId);
+	}
 }

+ 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());
 		}

+ 23 - 0
netflix-service/src/main/java/com/cyksj/service/mange/statistics/impl/StatisticsDataServiceImpl.java

@@ -12,6 +12,7 @@ import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.statistics.*;
 import com.cyksj.mapper.shop.YhShopMapper;
+import com.cyksj.mapper.sys.SysConfigMapper;
 import com.cyksj.model.dto.MonthlyUserOrderDetailDto;
 import com.cyksj.model.dto.NatureOrderDataDto;
 import com.cyksj.model.entity.*;
@@ -86,6 +87,8 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 
 	private final YhShopMapper yhShopMapper;
 
+	private final SysConfigMapper sysConfigMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
@@ -430,6 +433,9 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 			case 5:
 				getUnbindChannelOrderData(groupsDataStatisticsView, startDate, endDate);
 				break;
+			case 6:
+				getRealGoodsSourceData(groupsDataStatisticsView, startDate, endDate);
+				break;
 			default:
 				getSynthesisData(groupsDataStatisticsView, startDate, endDate);
 		}
@@ -526,6 +532,7 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 				getGroupsOrderCategoryData(groupsDataStatisticsView, startDate, endDate);
 				getRenewOrderData(groupsDataStatisticsView, startDate, endDate);
 				getUnbindChannelOrderData(groupsDataStatisticsView, startDate, endDate);
+				getRealGoodsSourceData(groupsDataStatisticsView, startDate, endDate);
 			} finally {
 				latch.countDown();
 			}
@@ -533,6 +540,22 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 		latch.await();
 	}
 
+	private void getRealGoodsSourceData(GroupsDataStatisticsView groupsDataStatisticsView, String startDate, String endDate) {
+		List<RealGoodsSourceData> realGoodsSourceDataList = orderDonMapper.getRealGoodsSourceData(startDate, endDate);
+		Map<String, List<RealGoodsSourceData>> collect = realGoodsSourceDataList.stream().collect(Collectors.groupingBy(RealGoodsSourceData::getLabelSource));
+		OrderDon.LabelSource[] values = OrderDon.LabelSource.values();
+		BigDecimal zero = BigDecimal.ZERO;
+		Integer orders = 0;
+		RealGoodsSourceData realGoodsSourceData = null;
+		for (OrderDon.LabelSource sysSource : values) {
+			if (collect.get(sysSource.name()) == null) {
+				realGoodsSourceData = new RealGoodsSourceData(sysSource.name(), orders, zero);
+				realGoodsSourceDataList.add(realGoodsSourceData);
+			}
+		}
+		groupsDataStatisticsView.setRealGoodsSourceDataList(realGoodsSourceDataList);
+	}
+
 	private void exportBusinessMonthlyData(List<ExcelSheetAndData> excelSheetDataList, Long startTime, Long endTime) {
 		//月付、季付、年付
 		Long nf_goodsId = 1l;

+ 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> {
-}

+ 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 {
-}

+ 9 - 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";
@@ -72,22 +67,15 @@ public class PayPalService{
             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 {
@@ -114,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();

+ 11 - 2
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -43,6 +43,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
@@ -118,7 +119,15 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				.build());
 		//过滤邀请制、已失效的车位
 		DateTime now = DateTime.now();
-		list.stream().forEach(ticket -> {
+		list = list.stream().filter(e -> {
+			if (e.getExpiryTime() != null && e.getExpiryTime().before(now)) {
+				return false;
+			}
+			return true;
+		}).collect(Collectors.toList());
+		Integer size = list.size();
+
+		list.forEach(ticket -> {
 			if (ticket.getSkuId() == null || ticket.getGoodsId() == null) {
 				return;
 			}
@@ -180,7 +189,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				ticket.setTransactionId(orderDon.getTransactionId());
 			}
 
-			if (list.size() > 1 && ticket.getGoodsId() != 18) {
+			if (size > 1 && ticket.getGoodsId() != 18) {
 				Date payTime = null;
 				if (orderDon != null) {
 					payTime = Optional.ofNullable(orderDon.getPayTime()).orElse(orderDon.getCreatedTime());

+ 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 {

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/sys/impl/SysConfigChangeRecordServiceImpl.java

@@ -227,6 +227,9 @@ public class SysConfigChangeRecordServiceImpl extends ServiceImpl<SysConfigChang
 				String userList;
 				if (link.getIsDuty()) {
 					userList = link.getChooseDutyUsers();
+					if (!isDutyTask.get()) {
+						isDutyTask.set(true);
+					}
 				} else {
 					userList = link.getUserList();
 				}

+ 0 - 11
netflix-service/src/main/java/com/cyksj/service/user/UserGalaxycoinRecordService.java

@@ -1,11 +0,0 @@
-package com.cyksj.service.user;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.cyksj.model.entity.UserGalaxycoinRecord;
-
-/**
- * @author zwhui
- * @date 2023/10/12 13:34
- */
-public interface UserGalaxycoinRecordService extends IService<UserGalaxycoinRecord> {
-}

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

@@ -4,7 +4,6 @@ import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.mapper.DistributeOrdersDeductPointsRecordMapper;
 import com.cyksj.mapper.UserBalanceSourceRecordMapper;
-import com.cyksj.mapper.UserGalaxycoinRecordMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.shop.YhShopDistributeOrdersDeductPointsRecordMapper;
 import com.cyksj.model.entity.DistributeOrdersDeductPointsRecord;
@@ -40,8 +39,6 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 
 	private final YhShopDistributeOrdersDeductPointsRecordMapper yhShopDistributeOrdersDeductPointsRecordMapper;
 
-	private final UserGalaxycoinRecordMapper userGalaxycoinRecordMapper;
-
 	@Override
 	public void deductDistributePoints(Long orderId, Long userId, BigDecimal deductPoints) {
 		if (deductPoints.compareTo(BigDecimal.ZERO) <= 0) {

+ 0 - 17
netflix-service/src/main/java/com/cyksj/service/user/impl/UserGalaxycoinRecordServiceImpl.java

@@ -1,17 +0,0 @@
-package com.cyksj.service.user.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.mapper.UserGalaxycoinRecordMapper;
-import com.cyksj.model.entity.UserGalaxycoinRecord;
-import com.cyksj.service.user.UserGalaxycoinRecordService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-/**
- * @author zwhui
- * @date 2023/10/12 13:35
- */
-@Service
-@RequiredArgsConstructor
-public class UserGalaxycoinRecordServiceImpl extends ServiceImpl<UserGalaxycoinRecordMapper, UserGalaxycoinRecord> implements UserGalaxycoinRecordService {
-}

+ 17 - 0
netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java

@@ -363,4 +363,21 @@ public class CouponFrontController {
 		CouponUserView couponUserView = couponFontService.getNewUserWelfareCoupons(userId, now);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
 	}
+
+	@GetMapping("/get/coupon/detail/{couponId}")
+	public Result<CouponUserView> getCouponDetailById(@PathVariable Long couponId) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		CouponUserView couponUserView = couponFontService.getCouponDetailById(userId, couponId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
+	}
+
+	/**
+	 * 领取优惠券
+	 */
+	@PostMapping("/receive/coupon/{couponId}")
+	public Result<CouponUserView> receiveCoupon(@PathVariable Long couponId) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		CouponUserView couponUserView = couponFontService.receiveCoupon(userId, couponId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(couponUserView);
+	}
 }

+ 2 - 135
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsBackLoginController.java

@@ -1,7 +1,5 @@
 package com.cyksj.web.controller.cps;
 
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,36 +12,25 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.config.wxlogin.WxOpenPlatYHLXLoginConfig;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.model.dto.AuthRedirect;
 import com.cyksj.model.dto.AuthToken;
 import com.cyksj.model.dto.CpsAuthDto;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
-import com.cyksj.model.entity.*;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserDistribute;
 import com.cyksj.model.request.LoginReq;
-import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.authorization.AuthorizationService;
 import com.cyksj.service.cps.CpsManageService;
 import com.cyksj.service.wechat.WeChatService;
 import com.cyksj.web.util.StpCpsManageUser;
-import com.ejlchina.searcher.BeanSearcher;
-import com.ejlchina.searcher.SearchResult;
-import com.ejlchina.searcher.util.MapBuilder;
-import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.List;
-import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /*
  *项目名: netflix
@@ -57,12 +44,6 @@ import java.util.stream.Collectors;
 public class CpsBackLoginController {
 	private final CpsManageService cpsManageService;
 
-	private final BeanSearcher beanSearcher;
-
-	private final HttpServletRequest request;
-
-	private final GoodsDonMapper goodsDonMapper;
-
 	private final RedisService redisService;
 
 	private final static Sequence SEQUENCE = new Sequence(0);
@@ -169,118 +150,4 @@ public class CpsBackLoginController {
 		redisService.del(key);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(o.toString());
 	}
-
-
-	/**
-	 * 个人分销平台数据详情
-	 */
-	@GetMapping("/get/distribute/detail")
-	public Result<CpsUserDistributeDetailView> getDistributeDetail() {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		User user = beanSearcher.searchFirst(User.class, MapUtils.builder().field(User::getId, cpsUserId).onlySelect(User::getPoints).build());
-		BigDecimal thresholdPoints = BigDecimal.valueOf(1000);
-		BigDecimal wApplyMoney = user.getPoints().divide(thresholdPoints, 2, RoundingMode.DOWN);
-		//已提现
-		Number gotApplyMoney = beanSearcher.searchSum(DistributeMoneyApply.class, MapUtils.builder()
-				.field(DistributeMoneyApply::getUserId, cpsUserId)
-				.field(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success.name())
-				.build(), "money");
-		Number reMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.success.name()).build(), "points");
-		Number wMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.waiting.name()).build(), "points");
-		List<UserDistributeRateView> rateViews = beanSearcher.searchAll(UserDistributeRateView.class, MapUtils.builder()
-				.put("distribute_id", String.format("and distribute_id = (select id from user_distribute where user_id = %s and deleted is true limit 1)", cpsUserId))
-				.orderBy(UserDistributeRateView::getRate).desc()
-				.build());
-		CpsUserDistributeDetailView detailView = new CpsUserDistributeDetailView();
-		Map<String, List<UserDistributeRateView>> collect = rateViews.stream().filter(ct -> StrUtil.isNotBlank(ct.getCategoryName())).collect(Collectors.groupingBy(UserDistributeRateView::getCategoryName));
-		detailView.setRateViews(collect);
-		detailView.setWMoney(BigDecimal.valueOf(wMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
-		detailView.setReMoney(BigDecimal.valueOf(reMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
-
-		detailView.setWApplyMoney(wApplyMoney);
-		detailView.setGotApplyMoney(BigDecimal.valueOf(gotApplyMoney.doubleValue()).divide(BigDecimal.valueOf(100)));
-		return GatewayResponse.SUCCESS.newBuilder().toResult(detailView);
-	}
-
-	/**
-	 * 待入账数据统计
-	 */
-	@GetMapping("/get/wMoney/statisticsData")
-	public Result<BrokenLineCpsUserWMoneyView> getWMoneyStatisticsDataView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		DateTime first = null;
-		DateTime end = null;
-		if (firstDate != null) {
-			first = DateUtil.date(firstDate);
-		}
-		if (lastDate != null) {
-			end = DateUtil.date(lastDate);
-		}
-		BrokenLineCpsUserWMoneyView brokenLineCpsUserWMoneyView = Optional.ofNullable(cpsManageService.getWMoneyStatisticsDate(cpsUserId, first, end)).orElse(new BrokenLineCpsUserWMoneyView());
-		List<CpsUserWMoneyStatisticsDataView> dataView = cpsManageService.getWMoneyStatisticsDataView(cpsUserId, first, end);
-		brokenLineCpsUserWMoneyView.setDataView(dataView);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineCpsUserWMoneyView);
-	}
-
-	/**
-	 * 分销订单收入统计
-	 */
-	@GetMapping("/get/distribute/orders/statistics")
-	public Result<SearchResult<UserDistributeOrdersStatisticsView>> getUserDistributeOrdersStatisticsView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		String first = null;
-		String end = null;
-		String timeSql = StrUtil.EMPTY;
-		if (firstDate != null) {
-			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time >= '%s'", first);
-		}
-		if (lastDate != null) {
-			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time < '%s'", end);
-		}
-		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
-		if (StrUtil.isNotEmpty(timeSql)) {
-			builder.put("time", timeSql);
-		}
-		SearchResult<UserDistributeOrdersStatisticsView> search = beanSearcher.search(UserDistributeOrdersStatisticsView.class, builder.build());
-		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-	}
-
-	/**
-	 * 分销订单收入详细
-	 */
-	@GetMapping("/get/distribute/orders/detail")
-	public Result<SearchResult<UserDistributeOrdersDetailView>> getUserDistributeOrdersDetailView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		String first = null;
-		String end = null;
-		String timeSql = StrUtil.EMPTY;
-		if (firstDate != null) {
-			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time >= '%s'", first);
-		}
-		if (lastDate != null) {
-			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time < '%s'", end);
-		}
-		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
-		if (StrUtil.isNotEmpty(timeSql)) {
-			builder.put("time", timeSql);
-		}
-		SearchResult<UserDistributeOrdersDetailView> search = beanSearcher.search(UserDistributeOrdersDetailView.class, builder.build());
-		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-	}
-
-	/**
-	 * 分销商品列表
-	 */
-	@GetMapping("/get/goods")
-	public Result<List<GoodsDon>> getGoodsList() {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		List<GoodsDon> goodsDons = goodsDonMapper.getDistributeGoodsDetail(cpsUserId);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
-	}
 }

+ 208 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsDistribtueDataController.java

@@ -0,0 +1,208 @@
+package com.cyksj.web.controller.cps;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.GoodsDonMapper;
+import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.model.entity.DistributeMoneyApply;
+import com.cyksj.model.entity.DistributeWaitingSendPoints;
+import com.cyksj.model.entity.GoodsDon;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.views.*;
+import com.cyksj.service.cps.CpsManageService;
+import com.cyksj.web.util.StpCpsManageUser;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapBuilder;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CpsDistribtueDataController
+ * 创建者: JavaZou
+ * 创建时间:2024/3/19 11:42
+ * 分销数据控制层
+ */
+@RestController
+@RequestMapping("/cps/manage")
+@RequiredArgsConstructor
+public class CpsDistribtueDataController {
+
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	private final GoodsDonMapper goodsDonMapper;
+
+	private final CpsManageService cpsManageService;
+
+	private final UserDistributeMapper userDistributeMapper;
+
+	/**
+	 * 个人分销平台数据详情
+	 */
+	@GetMapping("/get/distribute/detail")
+	public Result<CpsUserDistributeDetailView> getDistributeDetail() {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		User user = beanSearcher.searchFirst(User.class, MapUtils.builder().field(User::getId, cpsUserId).onlySelect(User::getPoints).build());
+		BigDecimal thresholdPoints = BigDecimal.valueOf(1000);
+		BigDecimal wApplyMoney = user.getPoints().divide(thresholdPoints, 2, RoundingMode.DOWN);
+		//已提现
+		Number gotApplyMoney = beanSearcher.searchSum(DistributeMoneyApply.class, MapUtils.builder()
+				.field(DistributeMoneyApply::getUserId, cpsUserId)
+				.field(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success.name())
+				.build(), "money");
+		Number reMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.success.name()).build(), "points");
+		Number wMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.waiting.name()).build(), "points");
+		List<UserDistributeRateView> rateViews = beanSearcher.searchAll(UserDistributeRateView.class, MapUtils.builder()
+				.put("distribute_id", String.format("and distribute_id = (select id from user_distribute where user_id = %s and deleted is true limit 1)", cpsUserId))
+				.orderBy(UserDistributeRateView::getRate).desc()
+				.build());
+		CpsUserDistributeDetailView detailView = new CpsUserDistributeDetailView();
+		Map<String, List<UserDistributeRateView>> collect = rateViews.stream().filter(ct -> StrUtil.isNotBlank(ct.getCategoryName())).collect(Collectors.groupingBy(UserDistributeRateView::getCategoryName));
+		detailView.setRateViews(collect);
+		detailView.setWMoney(BigDecimal.valueOf(wMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
+		detailView.setReMoney(BigDecimal.valueOf(reMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
+
+		detailView.setWApplyMoney(wApplyMoney);
+		detailView.setGotApplyMoney(BigDecimal.valueOf(gotApplyMoney.doubleValue()).divide(BigDecimal.valueOf(100)));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(detailView);
+	}
+
+	/**
+	 * 待入账数据统计
+	 */
+	@GetMapping("/get/wMoney/statisticsData")
+	public Result<BrokenLineCpsUserWMoneyView> getWMoneyStatisticsDataView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		DateTime first = null;
+		DateTime end = null;
+		if (firstDate != null) {
+			first = DateUtil.date(firstDate);
+		}
+		if (lastDate != null) {
+			end = DateUtil.date(lastDate);
+		}
+		BrokenLineCpsUserWMoneyView brokenLineCpsUserWMoneyView = Optional.ofNullable(cpsManageService.getWMoneyStatisticsDate(cpsUserId, first, end)).orElse(new BrokenLineCpsUserWMoneyView());
+		List<CpsUserWMoneyStatisticsDataView> dataView = cpsManageService.getWMoneyStatisticsDataView(cpsUserId, first, end);
+		brokenLineCpsUserWMoneyView.setDataView(dataView);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineCpsUserWMoneyView);
+	}
+
+	/**
+	 * 分销订单收入统计
+	 */
+	@GetMapping("/get/distribute/orders/statistics")
+	public Result<SearchResult<UserDistributeOrdersStatisticsView>> getUserDistributeOrdersStatisticsView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		String timeSql = StrUtil.EMPTY;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time >= '%s'", first);
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time < '%s'", end);
+		}
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+		if (StrUtil.isNotEmpty(timeSql)) {
+			builder.put("time", timeSql);
+		}
+		SearchResult<UserDistributeOrdersStatisticsView> search = beanSearcher.search(UserDistributeOrdersStatisticsView.class, builder.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 分销订单收入详细
+	 */
+	@GetMapping("/get/distribute/orders/detail")
+	public Result<SearchResult<UserDistributeOrdersDetailView>> getUserDistributeOrdersDetailView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		String timeSql = StrUtil.EMPTY;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time >= '%s'", first);
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time < '%s'", end);
+		}
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+		if (StrUtil.isNotEmpty(timeSql)) {
+			builder.put("time", timeSql);
+		}
+		SearchResult<UserDistributeOrdersDetailView> search = beanSearcher.search(UserDistributeOrdersDetailView.class, builder.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 分销商品列表
+	 */
+	@GetMapping("/get/goods")
+	public Result<List<GoodsDon>> getGoodsList() {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		List<GoodsDon> goodsDons = goodsDonMapper.getDistributeGoodsDetail(cpsUserId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
+	}
+
+	/**
+	 * 数据中心折线图
+	 */
+	@GetMapping("/get/data/brokenLine")
+	public Result<CpsOrderDataStatisticsView> getDataBrokenLine(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd");
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd");
+		}
+		CpsOrderDataStatisticsView brokenLineObjView = Optional.ofNullable(userDistributeMapper.selectOrderBrokenLineMoney(cpsUserId, first, end))
+				.orElse(new CpsOrderDataStatisticsView());
+
+		if (brokenLineObjView != null) {
+			String timeSql = StrUtil.EMPTY;
+			if (firstDate != null) {
+				first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+				timeSql += String.format(" and o.created_time >= '%s'", first);
+			}
+			if (lastDate != null) {
+				end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+				timeSql += String.format(" and o.created_time < '%s'", end);
+			}
+			MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+			builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+			if (StrUtil.isNotEmpty(timeSql)) {
+				builder.put("time", timeSql);
+			}
+			builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+			List<CpsOrderView> views = beanSearcher.searchAll(CpsOrderView.class,builder.build());
+			Map<Long, List<CpsOrderView>> goodsMap = views.stream().collect(Collectors.groupingBy(CpsOrderView::getGoodsId));
+			brokenLineObjView.setGoodsData(goodsMap);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineObjView);
+	}
+}

+ 32 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsPopularizeController.java

@@ -5,6 +5,8 @@ import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.annotation.NoSubmit;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
+import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserDistributePopularize;
 import com.cyksj.model.views.UserDistributePopularizeView;
@@ -13,6 +15,7 @@ import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpCpsManageUser;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
@@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.util.List;
 import java.util.Optional;
 
 /*
@@ -40,6 +44,8 @@ public class CpsPopularizeController {
 
 	private final EnvCommonService envCommonService;
 
+	private final CouponDistributePopularizeMapper couponDistributePopularizeMapper;
+
 	private final UserService userService;
 
 	/**
@@ -76,6 +82,8 @@ public class CpsPopularizeController {
 			user.setShowId(userService.getUserShowId(user.getId()));
 		}
 		view.setPopularizeLink(String.format(envCommonService.DISTRIBUTE_DEFAULT_URL_PREFIX, user.getShowId()));
+		//优惠码
+		view.setCouponCode(couponDistributePopularizeMapper.getCouponCodeByUid(cpsUserId));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(view);
 	}
 
@@ -113,4 +121,28 @@ public class CpsPopularizeController {
 		cpsPopularizeService.deleteById(cpsUserId, id);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 获取所有平台列表
+	 */
+	@GetMapping("/get/all/goods")
+	public Result<List<GoodsDon>> getAllGoodsList(Boolean isNoBuyout) {
+		MapBuilder mapBuilder = MapUtils.flatBuilder(request.getParameterMap());
+		//过滤买断制 平台
+		String conditionSql;
+		if (isNoBuyout != null && isNoBuyout) {
+			mapBuilder.field(GoodsDon::getSpecialType).op(Operator.IsNull);
+			conditionSql = "(select count(*) from goods_don_sku sku where sku.goods_id = g.id and sku.months = 300) = 0";
+		} else {
+			conditionSql = "(special_type is null or special_type != 'giftCard')";
+		}
+		conditionSql += "  and exists (select id from goods_don_sku sku where sku.goods_id = g.id limit 1)";
+		List<GoodsDon> goodsDons = beanSearcher.searchAll(GoodsDon.class, mapBuilder
+				.put("condition", conditionSql)
+				.field(GoodsDon::getType, 1)
+				.field(GoodsDon::getStatus, 1)
+				.field(GoodsDon::getDeleted, true)
+				.onlySelect(GoodsDon::getId, GoodsDon::getCategory, GoodsDon::getType, GoodsDon::getTitle, GoodsDon::getSecondType).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
+	}
 }

+ 23 - 25
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -342,7 +342,8 @@ public class GoodsDonController {
 			return yhShopGoodsDetail;
 		}
 		String goodsDetailKey = RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "goods_detail:" + id;
-		List<Long> filter_goodsIds = getFilterGoodsIds();
+		//List<Long> filter_goodsIds = getFilterGoodsIds();
+		List<Long> filter_goodsIds = null;
 		//存在过滤平台 商品详情不返回
 		if (CollUtil.isNotEmpty(filter_goodsIds) && filter_goodsIds.contains(id)) {
 			return GatewayResponse.SUCCESS.newBuilder().toResult();
@@ -359,6 +360,9 @@ public class GoodsDonController {
 				builder.orderBy(GoodsDonSku::getOrderBy).asc();
 			}
 			views.setSkuList(beanSearcher.searchAll(GoodsDonSkuFrontView.class, builder.build()));
+			Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+					.eq(OrderDon::getGoodsId, views.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
+			views.setSold(sold + views.getSold());
 			redisService.setNx(goodsDetailKey, views, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 60 * RandomUtil.randomInt(10));
 			o = redisService.get(goodsDetailKey);
 		}
@@ -414,16 +418,6 @@ public class GoodsDonController {
 			}
 			return true;
 		}).collect(Collectors.toList()));
-		Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
-				.eq(OrderDon::getGoodsId, views.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
-		views.setSold(sold + views.getSold());
-		//评论
-//        OrderCommentFrontView comments = beanSearcher.searchFirst(OrderCommentFrontView.class, MapUtils.builder()
-//                .field(OrderCommentFrontView::getGoodsId, views.getId())
-//                .orderBy(OrderCommentFrontView::getCommentTime).desc()
-//                .orderBy(OrderCommentFrontView::getId).desc()
-//                .build());
-//        views.setComments(comments);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(views);
 	}
 
@@ -543,7 +537,8 @@ public class GoodsDonController {
 			yhsId = yhShopFrontService.getYhsIdByCustomId(customId);
 			key = RedisService.key.YH_HOME_PAGHE_CACHE_SHOP.getEnvName() + yhsId + ":homeManage";
 		}
-		List<Long> filter_goodsIds = getFilterGoodsIds();
+		//List<Long> filter_goodsIds = getFilterGoodsIds();
+		List<Long> filter_goodsIds = null;
 		if (CollUtil.isNotEmpty(filter_goodsIds)) {
 			key += ":hz-ip";
 		}
@@ -951,12 +946,14 @@ public class GoodsDonController {
 		if (cgy != null) {
 			categoryGoodsKey += ":" + cgy;
 		}
-		List<Long> filter_goodsIds = getFilterGoodsIds();
+		//List<Long> filter_goodsIds = getFilterGoodsIds();
+		List<Long> filter_goodsIds = null;
 		if (CollUtil.isNotEmpty(filter_goodsIds)) {
 			categoryGoodsKey += ":hz-ip";
 		}
 		Object o = redisService.get(categoryGoodsKey);
 		if (o == null) {
+			DateTime now = DateTime.now();
 			MapBuilder mapBuilder = MapUtils.flatBuilder(request.getParameterMap());
 			if (cgy != null) {
 				String condition = String.format(" and gcr.category = %s", cgy);
@@ -966,11 +963,16 @@ public class GoodsDonController {
 				mapBuilder.field(GoodsFrontListCategoryView::getId, filter_goodsIds).op(Operator.NotIn);
 			}
 			List<GoodsFrontListCategoryView> goodsFrontListViews = beanSearcher.searchAll(GoodsFrontListCategoryView.class, mapBuilder.build());
+			goodsFrontListViews.forEach(data -> {
+				Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+						.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
+				data.setSold(sold + data.getSold());
+				data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1, null));
+			});
 			redisService.setNx(categoryGoodsKey, goodsFrontListViews, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 10 * 60);
 			o = redisService.get(categoryGoodsKey);
 		}
 		List<GoodsFrontListCategoryView> goodsFrontListViews = Jsons.parseList(o, GoodsFrontListCategoryView.class);
-		DateTime now = DateTime.now();
 		AtomicLong dsUserId = new AtomicLong();
 		AtomicBoolean existsChannel = new AtomicBoolean(true);
 		if (StrUtil.isNotBlank(dsCode)) {
@@ -994,10 +996,6 @@ public class GoodsDonController {
 				data.setMonths(minPriceUserOwnsSku.getMonths());
 				data.setDays(minPriceUserOwnsSku.getDays());
 			}
-			Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
-					.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
-			data.setSold(sold + data.getSold());
-			data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1, null));
 			//设置特定价格
 			setGcSpecificPrice(data, fUid, dsUserId.get());
 			return true;
@@ -1013,6 +1011,7 @@ public class GoodsDonController {
 		}
 		Object value = redisService.get(categoryGoodsKey);
 		if (value == null) {
+			DateTime now = DateTime.now();
 			MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 			builder.put("yhsId", String.format(" and yhs_id = %s", yhsId));
 			String condition = StrUtil.EMPTY;
@@ -1021,17 +1020,16 @@ public class GoodsDonController {
 			}
 			builder.put("condition", condition);
 			List<YhShopGoodsFrontCategoryView> list = beanSearcher.searchAll(YhShopGoodsFrontCategoryView.class, builder.build());
+			list.forEach(data->{
+				Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+						.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
+				data.setSold(sold + data.getSold());
+				data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1, yhsId));
+			});
 			redisService.setNx(categoryGoodsKey, list, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 5 * 60);
 			value = redisService.get(categoryGoodsKey);
 		}
 		List<YhShopGoodsFrontCategoryView> list = Jsons.parseList(value, YhShopGoodsFrontCategoryView.class);
-		DateTime now = DateTime.now();
-		list.forEach(data -> {
-			Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
-					.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
-			data.setSold(sold + data.getSold());
-			data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1, yhsId));
-		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(list);
 	}
 

+ 1 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -1130,6 +1130,7 @@ public class CmsAccountController {
 				insert.setType(2);
 				insert.setStartTime(DateTime.now());
 				insert.setExpiryTime(DateUtil.offsetMonth(DateTime.now(), 1));
+				insert.setBankCard(data.getBankCard());
 				//账号是否已经添加过
 				if (!insert.getAccount().contains("客服")) {
 					if (accountCommonService.checkIsDupAccount(insert.getGoodsId(), insert.getAccount())) {

+ 14 - 6
netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

@@ -38,6 +38,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author chan
@@ -98,16 +99,23 @@ public class UserController {
         long userId = StpUserUtil.getLoginIdAsLong();
         List<Long> userIds = userBindRelationService.getRelationUserIdList(userId, null);
         MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-        Long yhsId = yhShopFrontService.getYhsIdByCustomId(customId);
-        Number ticketNum = beanSearcher.searchCount(UserTicketView.class, builder
-                .field(UserTicketView::getYhsId, yhsId)
-                .field(UserTicketView::getUserId, userIds).op(Operator.InList)
+        List<RenewalView> renewalViews = beanSearcher.searchAll(RenewalView.class, builder
+                .field(RenewalView::getUserId, 0).op(Operator.GreaterThan)
+                .field(RenewalView::getUserId, userIds).op(Operator.InList)
                 .field(RenewalView::getStatus, List.of("validity", "overdue", "outside")).op(Operator.InList)
+                .orderBy(RenewalView::getExpiryTime).asc()
+                .onlySelect(RenewalView::getExpiryTime)
                 .build());
-        UserPersonalView personalView = new UserPersonalView();
         DateTime now = DateTime.now();
+        renewalViews = renewalViews.stream().filter(e -> {
+            if (e.getExpiryTime() != null && e.getExpiryTime().before(now)) {
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+        UserPersonalView personalView = new UserPersonalView();
         //车票
-        personalView.setNumOfTickets(ticketNum.intValue());
+        personalView.setNumOfTickets(renewalViews.size());
         //优惠券
         Integer couponSize = couponUserMapper.selectCount(Wrappers.lambdaQuery(CouponUser.class)
                 .eq(CouponUser::getUserId, userId)