BrokerageUserMapper.xml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="cn.iocoder.yudao.module.trade.dal.mysql.brokerage.BrokerageUserMapper">
  4. <select id="selectSummaryPageByUserId"
  5. resultType="cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO">
  6. SELECT bu.id, bu.bind_user_time AS brokerageTime, u.nickname, u.avatar,
  7. <!-- TODO @疯狂:biz_type、status 可以通过参数传入哇? -->
  8. (SELECT SUM(price) FROM trade_brokerage_record r
  9. WHERE r.user_id = u.id AND biz_type = 1 AND r.status = 1 AND r.deleted = FALSE) AS brokeragePrice,
  10. (SELECT COUNT(1) FROM trade_brokerage_record r
  11. WHERE r.user_id = u.id AND biz_type = 1 AND r.status = 1 AND r.deleted = FALSE) AS brokerageOrderCount,
  12. (SELECT COUNT(1) FROM trade_brokerage_user c
  13. WHERE c.bind_user_id = u.id AND c.deleted = FALSE) AS brokerageUserCount
  14. FROM member_user AS u
  15. JOIN trade_brokerage_user AS bu ON bu.id = u.id
  16. <!-- TODO @疯狂:1)bind_user_id 是不是可以先改成内存查询出 userId 的集合,然后去 in 哈?2)nickname 是不是可以基于查询出来的 userId 对应的 nickname 在内存里过滤,主要是避免和 member_user 链表 -->
  17. <where>
  18. <if test="param.nickname != null and param.nickname != ''">
  19. AND u.nickname LIKE concat('', #{param.nickname}, '')
  20. </if>
  21. <if test="param.level == 1">
  22. AND bu.bind_user_id = #{userId}
  23. </if>
  24. <if test="param.level == 2">
  25. AND bu.bind_user_id IN (SELECT id FROM trade_brokerage_user c WHERE c.bind_user_id = #{userId})
  26. </if>
  27. </where>
  28. <choose>
  29. <when test="param.sortingField.field == 'userCount'">
  30. ORDER BY brokerageUserCount ${param.sortingField.order}
  31. </when>
  32. <when test="param.sortingField.field == 'orderCount'">
  33. ORDER BY brokerageOrderCount ${param.sortingField.order}
  34. </when>
  35. <when test="param.sortingField.field == 'price'">
  36. ORDER BY brokeragePrice ${param.sortingField.order}
  37. </when>
  38. <otherwise>
  39. ORDER BY bu.bind_user_time DESC
  40. </otherwise>
  41. </choose>
  42. </select>
  43. </mapper>