UserCommonDistributeView.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. /**
  9. * 项目名: yhlxj2
  10. * 文件名: UserCommonDistributeView
  11. * 创建者: JavaZou
  12. * 创建时间:2024/1/31 17:35
  13. */
  14. @Getter
  15. @Setter
  16. @SearchBean(tables = "(select id,nickname from user where 1 = 1 :condition:) u left join user_distribute_shared us on u.id = us.shared_id" +
  17. " left join user_distribute ud on ud.user_id = u.id and ud.deleted is true" +
  18. " left join order_don od on od.user_id = us.user_id and od.is_distribute = 1 and od.status not in ('noPayment', 'close') :time:"
  19. , where = "ud.id is null",
  20. groupBy = "u.id,u.nickname")
  21. public class UserCommonDistributeView {
  22. @DbField("u.id")
  23. private Long userId;
  24. @DbField("u.nickname")
  25. private String nickname;
  26. @DbField("count(od.id)")
  27. private Integer orders;
  28. /**
  29. * 分销人数
  30. * 其中拉新用户购买一单又退款,且无后续下单动作的不算分销用户,不统计在此字段内
  31. */
  32. @DbField("count(DISTINCT CASE WHEN od.status != 'refund' THEN us.user_id ELSE null END)")
  33. private Integer distributeUserNum;
  34. /**
  35. * 邀请人数
  36. */
  37. @DbField("count(DISTINCT us.user_id)")
  38. private Integer inviteNum;
  39. /**
  40. * 分销订单金额(无需产生积分)
  41. */
  42. @DbField("(ifnull(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)),0) - ifnull(sum(od.refund_money),0))")
  43. private BigDecimal distributeOrdersMoney;
  44. /**
  45. * 分销消费占比
  46. */
  47. @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)")
  48. private BigDecimal distributeConsumerRate;
  49. /**
  50. * 销量最高的产品
  51. */
  52. @DbIgnore
  53. private String goodsTitle;
  54. }