UserDistributeViews.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package com.cyksj.model.views;
  2. import com.ejlchina.searcher.bean.DbField;
  3. import com.ejlchina.searcher.bean.DbIgnore;
  4. import com.ejlchina.searcher.bean.SearchBean;
  5. import lombok.Getter;
  6. import lombok.Setter;
  7. import java.math.BigDecimal;
  8. import java.util.Date;
  9. /*
  10. *项目名: netflix
  11. *文件名: UserDistributeViews
  12. *创建者: JavaZou
  13. *创建时间:2022/11/14 13:49
  14. */
  15. @Getter
  16. @Setter
  17. @SearchBean(tables = "user_distribute ud left join user_distribute_shared us on ud.user_id = us.shared_id" +
  18. " left join order_don od on od.user_id = us.user_id and od.is_fixed_distribute = 1 and od.status not in ('noPayment', 'close') :time:",
  19. where = "ud.deleted is true",
  20. groupBy = "ud.id,ud.user_id,ud.business_id,ud.remark,ud.created_time,ud.update_time,ud.business_bind_time,ud.type")
  21. public class UserDistributeViews {
  22. @DbField("ud.id")
  23. private Long id;
  24. @DbField("ud.user_id")
  25. private Long userId;
  26. @DbField("ud.business_id")
  27. private Long businessId;
  28. @DbIgnore
  29. private String businessName;
  30. @DbIgnore
  31. private String nickname;
  32. @DbField("ud.remark")
  33. private String remark;
  34. @DbField("ud.type")
  35. private String type;
  36. @DbField("count(od.id)")
  37. private Integer orders;
  38. /**
  39. * 分销人数
  40. * 其中拉新用户购买一单又退款,且无后续下单动作的不算分销用户,不统计在此字段内
  41. */
  42. @DbField("count(DISTINCT CASE WHEN od.status != 'refund' THEN us.user_id ELSE null END)")
  43. private Integer distributeUserNum;
  44. /**
  45. * 邀请人数
  46. */
  47. @DbField("count(DISTINCT us.user_id)")
  48. private Integer inviteNum;
  49. @DbField("ud.business_bind_time")
  50. private Date businessBindTime;
  51. /**
  52. * 分销订单金额(无需产生积分)
  53. */
  54. @DbField("(ifnull(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)),0) - ifnull(sum(od.refund_money),0))")
  55. private BigDecimal distributeOrdersMoney;
  56. /**
  57. * 分销消费占比
  58. */
  59. @DbField("ifnull(cast(count(DISTINCT CASE WHEN od.status != 'refund' THEN us.user_id ELSE null END)/count(DISTINCT us.user_id) as decimal(10,2)),0)")
  60. private BigDecimal distributeConsumerRate;
  61. /**
  62. * 销量最高的产品
  63. */
  64. @DbIgnore
  65. private String goodsTitle;
  66. @DbIgnore
  67. private BigDecimal availableMoney;
  68. @DbIgnore
  69. private BigDecimal gotMoney;
  70. @DbIgnore
  71. private BigDecimal points;
  72. @DbField("ud.created_time")
  73. private Date createdTime;
  74. @DbField("ud.update_time")
  75. private Date updateTime;
  76. }