PartnerUserMapper.xml 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105
  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="com.ydtech.modules.partner.dao.PartnerUserMapper">
  4. <select id="queryPage" resultType="com.ydtech.modules.partner.model.vo.PartnerUserVo">
  5. SELECT
  6. t.id,
  7. t.NAME AS userName,
  8. t.mobile,
  9. t.user_id,
  10. t.dept_id,
  11. d.`name` deptName,
  12. (SELECT sys_user.`name` FROM sys_user WHERE sys_user.id = t.referrer_id ) referrerName,
  13. t.commission_rate,
  14. t.referrer_id,
  15. t.create_by,
  16. t.create_time,
  17. t.update_by,
  18. t.update_time,
  19. u.`status`,
  20. t.grade,
  21. ( SELECT r.grade_name FROM partner_rule r WHERE r.grade = t.grade ) gradeName
  22. FROM
  23. partner_user t
  24. LEFT JOIN sys_dept d ON t.dept_id = d.id
  25. LEFT JOIN sys_user u ON u.id = t.user_id
  26. <where>
  27. u.status in (1,3) and t.grade in (1,2,3,4)
  28. <if test="queryVo.name != null and queryVo.name != ''">
  29. and t.name like concat('%', #{queryVo.name}, '%')
  30. </if>
  31. <if test="queryVo.mobile != null and queryVo.mobile != ''">
  32. and t.mobile like concat('%', #{queryVo.mobile}, '%')
  33. </if>
  34. <if test="queryVo.userId != null and queryVo.userId != ''">
  35. and t.user_id like concat('%', #{queryVo.userId}, '%')
  36. </if>
  37. <if test="queryVo.deptId != null and queryVo.deptId != ''">
  38. and t.dept_id like concat('%', #{queryVo.deptId}, '%')
  39. </if>
  40. <if test="queryVo.deptName != null and queryVo.deptName != ''">
  41. and t.dept_name like concat('%', #{queryVo.deptName}, '%')
  42. </if>
  43. <if test="queryVo.grade != null and queryVo.grade != ''">
  44. and t.grade like concat('%', #{queryVo.grade}, '%')
  45. </if>
  46. <if test="queryVo.commissionRate != null and queryVo.commissionRate != ''">
  47. and t.commission_rate like concat('%', #{queryVo.commissionRate}, '%')
  48. </if>
  49. <if test="queryVo.referrerId != null and queryVo.referrerId != ''">
  50. and t.referrer_id like concat('%', #{queryVo.referrerId}, '%')
  51. </if>
  52. </where>
  53. order by t.create_time desc
  54. </select>
  55. <select id="selectRecommender" resultType="java.util.Map">
  56. SELECT
  57. user_id userId,
  58. `name`
  59. FROM
  60. partner_user
  61. WHERE grade = #{level}
  62. </select>
  63. <select id="selectByUserId" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
  64. SELECT
  65. id,
  66. NAME AS userName,
  67. mobile,
  68. user_id,
  69. dept_id,
  70. (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS agencyName,
  71. (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
  72. grade AS type,
  73. referrer_id,
  74. create_time
  75. FROM
  76. partner_user
  77. WHERE
  78. user_id = #{id}
  79. AND grade = ${grade}
  80. </select>
  81. <select id="selectTodayOverview" resultType="com.ydtech.modules.partner.model.vo.TodayOverview">
  82. SELECT
  83. ifnull((
  84. SELECT COUNT(DISTINCT company_id) FROM partner_premium_details WHERE DATE(create_time) = CURDATE() AND user_id IN
  85. <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
  86. #{item}
  87. </foreach>
  88. ),0
  89. ) numberOrders,
  90. ifnull(
  91. (SELECT count(id) FROM partner_user WHERE DATE(create_time) = CURDATE() AND referrer_id = #{params.userId}),0
  92. ) addPerNumber,
  93. ifnull((
  94. SELECT SUM(db.sumpremium) FROM (SELECT DISTINCT company_id,sumpremium FROM partner_premium_details
  95. WHERE DATE(create_time) = CURDATE() AND user_id IN
  96. <foreach collection="params.relatedPerList" item="item" index="index" separator="," open="(" close=")">
  97. #{item}
  98. </foreach>
  99. ) db
  100. ),0
  101. ) premium,
  102. ifnull(
  103. (SELECT SUM(extract_fee) FROM partner_premium_details where DATE(create_time) = CURDATE() AND user_id = #{params.userId}),0
  104. ) commission
  105. </select>
  106. <resultMap id="homeVo" type="com.ydtech.modules.partner.model.vo.TeamOverviewVo">
  107. <result property="grade" column="grade"/>
  108. <result property="gradeName" column="grade_name"/>
  109. </resultMap>
  110. <!--
  111. select grade,grade_name from partner_rule
  112. -->
  113. <select id="selectTeamOverview" resultMap="homeVo">
  114. SELECT
  115. r.grade,
  116. r.grade_name
  117. FROM
  118. partner_user u
  119. LEFT JOIN partner_rule r ON u.grade = r.grade
  120. WHERE
  121. user_id = #{params.userId}
  122. </select>
  123. <select id="selectStatistics" resultType="java.util.Map">
  124. <if test="grade == 1">
  125. SELECT
  126. ifnull(
  127. (SELECT
  128. COUNT( p.id )
  129. FROM
  130. partner_user p
  131. LEFT JOIN sys_user u ON u.id = p.user_id
  132. WHERE
  133. u.STATUS = 1
  134. AND p.referrer_id = #{params.userId}
  135. AND p.grade = 2),0
  136. ) v1,
  137. ifnull(
  138. ( SELECT
  139. COUNT(u1.id)
  140. FROM
  141. partner_user u1
  142. LEFT JOIN sys_user u ON u.id = u1.user_id
  143. WHERE
  144. u.`status` = 1 AND u1.grade = 3 AND
  145. u1.referrer_id IN (
  146. SELECT
  147. p.user_id
  148. FROM
  149. partner_user p
  150. LEFT JOIN sys_user u ON u.id = p.user_id
  151. WHERE
  152. u.STATUS = 1
  153. AND p.referrer_id = #{params.userId}
  154. AND p.grade = 2
  155. ) ),0
  156. ) v2,
  157. ifnull(
  158. ( SELECT
  159. COUNT( p.id )
  160. FROM
  161. partner_user p
  162. LEFT JOIN sys_user u ON u.id = p.user_id
  163. WHERE
  164. u.STATUS = 1
  165. AND p.referrer_id = #{params.userId}
  166. AND p.grade = 2
  167. AND to_days(p.create_time) = to_days(now()) ),0
  168. ) v3,
  169. ifnull(
  170. (SELECT
  171. COUNT(u1.id)
  172. FROM
  173. partner_user u1
  174. LEFT JOIN sys_user u ON u.id = u1.user_id
  175. WHERE
  176. u.`status` = 1 and u1.grade = 3 AND to_days(u1.create_time) = to_days(now()) AND
  177. u1.referrer_id IN (
  178. SELECT
  179. u.user_id
  180. FROM
  181. partner_user u
  182. LEFT JOIN sys_user t ON t.id = u.user_id
  183. WHERE
  184. t.`status` = 1 AND
  185. u.grade = 2
  186. AND u.referrer_id = #{params.userId}
  187. )),0
  188. ) v4
  189. </if>
  190. <if test="grade == 2">
  191. SELECT
  192. ifnull(
  193. ( SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 3 and partner_user.referrer_id = #{params.userId}),0
  194. ) v1,
  195. -- 合伙人的工作室
  196. ifnull(
  197. (
  198. SELECT count(1) FROM partner_user
  199. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  200. WHERE partner_user.referrer_id IN (
  201. SELECT
  202. user_id
  203. FROM
  204. partner_user
  205. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  206. WHERE sys_user.`status` = 1 AND
  207. partner_user.referrer_id = #{params.userId}
  208. AND grade = 3
  209. ) AND grade = 4 AND sys_user.`status` = 1
  210. ),0
  211. ) v2,
  212. -- 我今日新增的合伙人
  213. ifnull(
  214. (
  215. SELECT
  216. count( 1 )
  217. FROM
  218. partner_user p
  219. LEFT JOIN sys_user u ON u.id = p.user_id
  220. WHERE
  221. p.grade = 3
  222. AND p.referrer_id = #{params.userId}
  223. AND to_days( p.create_time ) = to_days(
  224. now())
  225. ),0
  226. ) v3,
  227. ifnull( (SELECT
  228. count( 1 )
  229. FROM
  230. partner_user p
  231. LEFT JOIN sys_user u ON u.id = p.user_id
  232. WHERE
  233. p.grade = 4 and to_days(p.create_time) = to_days(now())
  234. AND p.referrer_id IN (
  235. SELECT
  236. user_id
  237. FROM
  238. partner_user p
  239. LEFT JOIN sys_user u ON u.id = p.user_id
  240. WHERE
  241. p.grade = 3
  242. AND p.referrer_id = #{params.userId}
  243. )),0) v4,
  244. ifnull(
  245. (
  246. SELECT SUM(db.sumpremium) FROM (
  247. SELECT sumpremium FROM partner_premium_details WHERE to_days(create_time) = to_days(now()) AND user_id = #{params.userId} and source = #{params.grade}
  248. GROUP BY issuer_id,sumpremium ) db
  249. ),0
  250. ) v5,
  251. ifnull(
  252. (SELECT SUM(extract_fee) FROM partner_premium_details WHERE to_days(create_time) = to_days(now()) AND user_id = #{params.userId}),0
  253. ) v6
  254. </if>
  255. <if test="grade == 3">
  256. SELECT
  257. ifnull((SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 4 and partner_user.referrer_id = #{params.userId}),0) v1,
  258. ifnull((
  259. SELECT count(1) FROM partner_user
  260. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  261. WHERE partner_user.referrer_id IN (
  262. SELECT
  263. user_id
  264. FROM
  265. partner_user
  266. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  267. WHERE sys_user.`status` = 1 AND
  268. partner_user.referrer_id = #{params.userId}
  269. AND grade = 4
  270. ) AND grade = 5 AND sys_user.`status` = 1
  271. ),0) v2,
  272. ifnull( (
  273. SELECT
  274. count( 1 )
  275. FROM
  276. partner_user p
  277. LEFT JOIN sys_user u ON u.id = p.user_id
  278. WHERE
  279. p.grade = 4
  280. AND p.referrer_id = #{params.userId}
  281. AND to_days( p.create_time ) = to_days(
  282. now())
  283. ),0
  284. ) v3,
  285. ifnull( (SELECT
  286. count( 1 )
  287. FROM
  288. partner_user p
  289. LEFT JOIN sys_user u ON u.id = p.user_id
  290. WHERE
  291. p.grade = 5 and to_days(p.create_time) = to_days(now())
  292. AND p.referrer_id IN (
  293. SELECT
  294. user_id
  295. FROM
  296. partner_user p
  297. LEFT JOIN sys_user u ON u.id = p.user_id
  298. WHERE
  299. p.grade = 4
  300. AND p.referrer_id = #{params.userId}
  301. )),0
  302. ) v4,
  303. ifnull((
  304. SELECT SUM(db.sumpremium) FROM (
  305. SELECT sumpremium FROM partner_premium_details WHERE to_days(create_time) = to_days(now()) AND user_id = #{params.userId} and source = #{params.grade}
  306. GROUP BY issuer_id,sumpremium ) db
  307. ),0
  308. ) v5,
  309. ifnull(
  310. (SELECT SUM(extract_fee) FROM partner_premium_details WHERE to_days(create_time) = to_days(now()) AND user_id = #{params.userId}),0
  311. ) v6
  312. </if>
  313. <if test="grade == 4">
  314. SELECT
  315. ifnull((SELECT count(1) FROM partner_user left join sys_user on sys_user.id = partner_user.user_id WHERE partner_user.grade = 5 and partner_user.referrer_id = #{params.userId}),0) v1,
  316. ifnull(
  317. (
  318. SELECT count(1) FROM partner_user
  319. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  320. WHERE partner_user.referrer_id IN (
  321. SELECT
  322. user_id
  323. FROM
  324. partner_user
  325. LEFT JOIN sys_user ON sys_user.id = partner_user.user_id
  326. WHERE sys_user.`status` = 1 AND
  327. partner_user.referrer_id = #{params.userId}
  328. AND grade = 5
  329. ) AND grade = 6 AND sys_user.`status` = 1
  330. ),0
  331. ) v2,
  332. ifnull( (
  333. SELECT
  334. count( 1 )
  335. FROM
  336. partner_user p
  337. LEFT JOIN sys_user u ON u.id = p.user_id
  338. WHERE
  339. p.grade = 5
  340. AND p.referrer_id = #{params.userId}
  341. AND to_days( p.create_time ) = to_days(
  342. now())
  343. ),0
  344. ) v3,
  345. ifnull( (SELECT
  346. count( 1 )
  347. FROM
  348. partner_user p
  349. LEFT JOIN sys_user u ON u.id = p.user_id
  350. WHERE
  351. p.grade = 6 and to_days(p.create_time) = to_days(now())
  352. AND p.referrer_id IN (
  353. SELECT
  354. user_id
  355. FROM
  356. partner_user p
  357. LEFT JOIN sys_user u ON u.id = p.user_id
  358. WHERE
  359. p.grade = 5
  360. AND p.referrer_id = #{params.userId}
  361. )),0
  362. ) v4,
  363. ifnull( (SELECT SUM(sumpremium) FROM partner_premium_details WHERE user_id = #{params.userId} AND to_days(create_time) = to_days(now())),0 ) v5,
  364. ifnull( (SELECT SUM(extract_fee) FROM partner_premium_details WHERE user_id = #{params.userId} AND to_days(create_time) = to_days(now())),0 ) v6
  365. </if>
  366. </select>
  367. <resultMap id="SelectUserVo" type="com.ydtech.modules.partner.model.vo.SelectUserVo">
  368. <result property="grade" column="grade"/>
  369. <result property="gradeName" column="grade_name"/>
  370. <result property="userId" column="userId"/>
  371. <collection property="userVoList" column="{userId = userId,grade = grade}" select="userVoList" />
  372. </resultMap>
  373. <resultMap id="UserVoListVo" type="com.ydtech.modules.partner.model.vo.MyUserVo">
  374. <result property="userName" column="userName"/>
  375. <result property="userId" column="userId"/>
  376. <result property="grade" column="grade"/>
  377. <association property="partnerTotal" column="{userId = userId}" select="selectPartnerTotal" />
  378. </resultMap>
  379. <select id="userVoList" resultMap="UserVoListVo" >
  380. SELECT
  381. p.`name` userName,
  382. p.user_id userId,
  383. #{grade} as grade,
  384. t.approve_time as AuditTime
  385. FROM
  386. partner_user p
  387. LEFT JOIN sys_user_track t ON t.user_id = p.user_id
  388. WHERE
  389. grade = #{grade} AND t.`status` = 1 AND p.referrer_id = #{userId}
  390. </select>
  391. <select id="selectUser" resultMap="SelectUserVo">
  392. select grade,grade_name,#{userId} as userId from partner_rule where grade = #{grade}
  393. </select>
  394. <select id="selectPartnerTotal" resultType="java.util.Map">
  395. SELECT (
  396. SELECT
  397. COUNT(p1.user_id)
  398. FROM
  399. partner_user p1
  400. LEFT JOIN sys_user u ON u.id = p1.user_id
  401. WHERE
  402. u.STATUS = 1
  403. AND p1.referrer_id = #{userId}
  404. ) partnerSum,
  405. (
  406. SELECT
  407. (
  408. COALESCE ( SUM( jq_premium ), 0 ) + COALESCE ( SUM( sy_premium ), 0 ) + COALESCE ( SUM( no_premium ), 0 )) AS total_sum
  409. FROM
  410. ins_fee_order_new
  411. WHERE
  412. user_id IN (
  413. SELECT
  414. p1.user_id AS userId
  415. FROM
  416. partner_user p1
  417. LEFT JOIN sys_user u ON u.id = p1.user_id
  418. WHERE
  419. u.STATUS = 1
  420. AND p1.referrer_id = #{userId}
  421. )
  422. ) premium,
  423. (
  424. SELECT COUNT(1) FROM partner_user
  425. ) commission
  426. </select>
  427. <!--
  428. WITH RECURSIVE sub_partners AS (
  429. SELECT p1.id, p1.user_id
  430. FROM partner_user p1
  431. LEFT JOIN sys_user u ON u.id = p1.user_id
  432. WHERE u.STATUS = 1 AND p1.referrer_id = #{userId}
  433. <if test="params != null">
  434. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  435. AND p1.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  436. </if>
  437. <if test="params.countCycle != null">
  438. <if test="params.countCycle == 'Day'">
  439. AND DATE(p1.create_time) = CURDATE()
  440. </if>
  441. <if test="params.countCycle == 'Week'">
  442. AND YEARWEEK(p1.create_time, 1) = YEARWEEK(CURDATE(), 1)
  443. </if>
  444. <if test="params.countCycle == 'Month'">
  445. AND YEAR(p1.create_time) = YEAR(CURDATE()) AND MONTH(p1.create_time) = MONTH(CURDATE())
  446. </if>
  447. </if>
  448. </if>
  449. UNION ALL
  450. SELECT p.id, p.user_id
  451. FROM partner_user p
  452. LEFT JOIN sys_user u1 ON u1.id = p.user_id
  453. INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
  454. WHERE u1.STATUS = 1
  455. <if test="params != null">
  456. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  457. AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  458. </if>
  459. <if test="params.countCycle != null">
  460. <if test="params.countCycle == 'Day'">
  461. AND DATE(p.create_time) = CURDATE()
  462. </if>
  463. <if test="params.countCycle == 'Week'">
  464. AND YEARWEEK(p.create_time, 1) = YEARWEEK(CURDATE(), 1)
  465. </if>
  466. <if test="params.countCycle == 'Month'">
  467. AND YEAR(p.create_time) = YEAR(CURDATE()) AND MONTH(p.create_time) = MONTH(CURDATE())
  468. </if>
  469. </if>
  470. </if>
  471. )
  472. SELECT count(1) AS total FROM sub_partners
  473. -->
  474. <select id="userCountIdsVo" resultType="java.lang.Integer">
  475. SELECT count(p1.id)
  476. FROM partner_user p1
  477. LEFT JOIN sys_user u ON u.id = p1.user_id
  478. <where>
  479. u.STATUS = 1
  480. <if test="params != null">
  481. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  482. AND p1.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  483. </if>
  484. <if test="params.countCycle != null">
  485. <if test="params.countCycle == 'Day'">
  486. AND DATE(p1.create_time) = CURDATE()
  487. </if>
  488. <if test="params.countCycle == 'Week'">
  489. AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(p1.create_time)
  490. </if>
  491. <if test="params.countCycle == 'Month'">
  492. AND YEAR(p1.create_time) = YEAR(CURDATE()) AND MONTH(p1.create_time) = MONTH(CURDATE())
  493. </if>
  494. </if>
  495. </if>
  496. <if test="ids != null and ids.size() > 0">
  497. AND p1.user_id in
  498. <foreach collection="ids" item="item" index="index" separator="," open="(" close=")">
  499. #{item}
  500. </foreach>
  501. </if>
  502. </where>
  503. </select>
  504. <select id="userCountVo" resultType="java.lang.Integer">
  505. WITH RECURSIVE sub_partners AS (
  506. SELECT p1.id, p1.user_id,p1.grade, CAST(p1.user_id AS CHAR(200)) AS path
  507. FROM partner_user p1
  508. LEFT JOIN sys_user u ON u.id = p1.user_id
  509. WHERE u.STATUS = 1 AND p1.referrer_id = #{userId} and p1.grade = #{grade}
  510. <if test="params != null">
  511. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  512. AND p1.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  513. </if>
  514. <if test="params.countCycle != null">
  515. <if test="params.countCycle == 'Day'">
  516. AND DATE(p1.create_time) = CURDATE()
  517. </if>
  518. <if test="params.countCycle == 'Week'">
  519. AND YEARWEEK(p1.create_time, 1) = YEARWEEK(CURDATE(), 1)
  520. </if>
  521. <if test="params.countCycle == 'Month'">
  522. AND YEAR(p1.create_time) = YEAR(CURDATE()) AND MONTH(p1.create_time) = MONTH(CURDATE())
  523. </if>
  524. </if>
  525. </if>
  526. UNION ALL
  527. SELECT p.id, p.user_id,p.grade,CONCAT(sp.path, '->', p.user_id)
  528. FROM partner_user p
  529. LEFT JOIN sys_user u1 ON u1.id = p.user_id
  530. INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
  531. WHERE u1.STATUS = 1 AND p.grade = (sp.grade + 1) AND sp.path NOT LIKE CONCAT('%->', p.user_id, '%')
  532. <if test="params != null">
  533. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  534. AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  535. </if>
  536. <if test="params.countCycle != null">
  537. <if test="params.countCycle == 'Day'">
  538. AND DATE(p.create_time) = CURDATE()
  539. </if>
  540. <if test="params.countCycle == 'Week'">
  541. AND YEARWEEK(p.create_time, 1) = YEARWEEK(CURDATE(), 1)
  542. </if>
  543. <if test="params.countCycle == 'Month'">
  544. AND YEAR(p.create_time) = YEAR(CURDATE()) AND MONTH(p.create_time) = MONTH(CURDATE())
  545. </if>
  546. </if>
  547. </if>
  548. )
  549. SELECT count(1) AS total FROM sub_partners
  550. </select>
  551. <select id="selectJuniorList" resultType="java.lang.String">
  552. SELECT
  553. p.user_id
  554. FROM
  555. partner_user p
  556. LEFT JOIN sys_user u ON u.id = p.user_id
  557. WHERE u.`status` = 1 AND p.grade = #{grade} AND p.referrer_id in
  558. <foreach collection="ids" item="item" index="index" separator="," open="(" close=")">
  559. #{item}
  560. </foreach>
  561. <if test="params != null">
  562. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  563. AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  564. </if>
  565. <if test="params.countCycle != null">
  566. <if test="params.countCycle == 'Day'">
  567. AND DATE(p.create_time) = CURDATE()
  568. </if>
  569. <if test="params.countCycle == 'Week'">
  570. AND YEARWEEK(p.create_time, 1) = YEARWEEK(CURDATE(), 1)
  571. </if>
  572. <if test="params.countCycle == 'Month'">
  573. AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) &lt;= date(p.create_time)
  574. </if>
  575. </if>
  576. </if>
  577. </select>
  578. <!--
  579. WITH RECURSIVE sub_partners AS (
  580. SELECT p1.id, p1.user_id,p1.create_time
  581. FROM partner_user p1
  582. LEFT JOIN sys_user u ON u.id = p1.user_id
  583. WHERE u.STATUS = 1 AND p1.referrer_id = #{userId}
  584. <if test="params != null">
  585. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  586. AND p1.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  587. </if>
  588. <if test="params.countCycle != null">
  589. <if test="params.countCycle == 'Day'">
  590. AND DATE(p1.create_time) = CURDATE()
  591. </if>
  592. <if test="params.countCycle == 'Week'">
  593. AND YEARWEEK(p1.create_time, 1) = YEARWEEK(CURDATE(), 1)
  594. </if>
  595. <if test="params.countCycle == 'Month'">
  596. AND YEAR(p1.create_time) = YEAR(CURDATE()) AND MONTH(p1.create_time) = MONTH(CURDATE())
  597. </if>
  598. </if>
  599. </if>
  600. UNION ALL
  601. SELECT p.id, p.user_id,p.create_time
  602. FROM partner_user p
  603. LEFT JOIN sys_user u1 ON u1.id = p.user_id
  604. INNER JOIN sub_partners sp ON p.referrer_id = sp.user_id
  605. WHERE u1.STATUS = 1
  606. <if test="params != null">
  607. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  608. AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  609. </if>
  610. <if test="params.countCycle != null">
  611. <if test="params.countCycle == 'Day'">
  612. AND DATE(p.create_time) = CURDATE()
  613. </if>
  614. <if test="params.countCycle == 'Week'">
  615. AND YEARWEEK(p.create_time, 1) = YEARWEEK(CURDATE(), 1)
  616. </if>
  617. <if test="params.countCycle == 'Month'">
  618. AND YEAR(p.create_time) = YEAR(CURDATE()) AND MONTH(p.create_time) = MONTH(CURDATE())
  619. </if>
  620. </if>
  621. </if>
  622. )
  623. SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) AS createTime, count( id ) AS total FROM sub_partners GROUP BY createTime
  624. -->
  625. <select id="userCountVo2" resultType="java.util.Map">
  626. SELECT
  627. DATE_FORMAT( p.create_time, '%Y-%m-%d' ) AS createTime,
  628. count( p.id ) AS total
  629. FROM
  630. partner_user p
  631. WHERE p.user_id in
  632. <foreach collection="userId" item="item" index="index" separator="," open="(" close=")">
  633. #{item}
  634. </foreach>
  635. <if test="params != null">
  636. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  637. AND p.create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  638. </if>
  639. <if test="params.countCycle != null">
  640. <if test="params.countCycle == 'Day'">
  641. AND DATE(p.create_time) = CURDATE()
  642. </if>
  643. <if test="params.countCycle == 'Week'">
  644. AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(p.create_time)
  645. </if>
  646. <if test="params.countCycle == 'Month'">
  647. AND YEAR(p.create_time) = YEAR(CURDATE()) AND MONTH(p.create_time) = MONTH(CURDATE())
  648. </if>
  649. </if>
  650. </if>
  651. GROUP BY
  652. createTime
  653. </select>
  654. <select id="selectJuniorListUser" resultType="com.ydtech.modules.partner.model.PartnerUser">
  655. select id,user_id,`name`,grade from partner_user where grade = #{grade} AND referrer_id in
  656. <foreach collection="ids" item="item" index="index" separator="," open="(" close=")">
  657. #{item}
  658. </foreach>
  659. <if test="params != null">
  660. <if test="params.timeFrame != null and params.timeFrame.length > 0">
  661. AND create_time BETWEEN #{params.timeFrame[0]} AND #{params.timeFrame[1]}
  662. </if>
  663. <if test="params.countCycle != null">
  664. <if test="params.countCycle == 'Day'">
  665. AND DATE(create_time) = CURDATE()
  666. </if>
  667. <if test="params.countCycle == 'Week'">
  668. AND YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)
  669. </if>
  670. <if test="params.countCycle == 'Month'">
  671. AND YEAR(create_time) = YEAR(CURDATE()) AND MONTH(create_time) = MONTH(CURDATE())
  672. </if>
  673. </if>
  674. </if>
  675. </select>
  676. <select id="selectByReferrerId" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
  677. SELECT
  678. id,
  679. NAME AS userName,
  680. mobile,
  681. user_id,
  682. dept_id,
  683. (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS deptName,
  684. (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
  685. grade AS type,
  686. referrer_id,
  687. create_time
  688. FROM
  689. partner_user
  690. WHERE
  691. referrer_id = #{userId}
  692. AND grade = ${grade}
  693. </select>
  694. <select id="selectQuerySuperiors" resultType="com.ydtech.modules.partner.model.vo.RelationalVo">
  695. SELECT
  696. id,
  697. NAME AS userName,
  698. mobile,
  699. user_id,
  700. dept_id,
  701. (SELECT `name` FROM sys_dept d WHERE d.id = partner_user.dept_id) AS deptName,
  702. (SELECT `name` FROM sys_user u WHERE u.id = partner_user.referrer_id) AS suggestName,
  703. grade AS type,
  704. referrer_id,
  705. create_time
  706. FROM
  707. partner_user
  708. WHERE
  709. user_id = #{userId}
  710. AND grade = ${grade}
  711. </select>
  712. <select id="myPerformanceTotal" resultType="com.alibaba.fastjson.JSONObject">
  713. select
  714. (select count(DISTINCT company_id) from partner_premium_details WHERE user_id in
  715. <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
  716. #{item}
  717. </foreach>
  718. <if test="map.startTime != '' and map.startTime != null">
  719. and DATE(create_time) BETWEEN #{map.startTime} AND #{map.endTime}
  720. </if>
  721. ) numberOrders,
  722. IFNULL((
  723. SELECT SUM(db.sumpremium) FROM (
  724. SELECT sumpremium FROM partner_premium_details WHERE user_id in
  725. <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
  726. #{item}
  727. </foreach>
  728. <if test="map.startTime != '' and map.startTime != null">
  729. and DATE(create_time) BETWEEN #{map.startTime} AND #{map.endTime}
  730. </if>
  731. GROUP BY issuer_id,sumpremium ) db
  732. ),0
  733. ) totalPremium,
  734. IFNULL((
  735. SELECT SUM(extract_fee) FROM partner_premium_details WHERE user_id = #{map.userId}
  736. <if test="map.startTime != '' and map.startTime != null">
  737. and DATE(create_time) BETWEEN #{map.startTime} AND #{map.endTime}
  738. </if>
  739. ),0
  740. ) commission
  741. </select>
  742. <select id="queryDataList" resultType="com.alibaba.fastjson.JSONObject">
  743. SELECT
  744. orderno ordersNo,
  745. licenseno carId,
  746. issuer_name agent,
  747. sumpremium premium,
  748. extract_fee commission,
  749. create_time issuanceTime,
  750. source,
  751. user_id userId
  752. FROM
  753. partner_premium_details
  754. WHERE
  755. user_id = #{map.userId} and source = #{map.grade}
  756. <if test="map.startTime != '' and map.startTime != null">
  757. and DATE(create_time) BETWEEN #{map.startTime} AND #{map.endTime}
  758. </if>
  759. </select>
  760. <select id="selectNumber" resultType="java.lang.Integer">
  761. SELECT COUNT(1) FROM (
  762. SELECT
  763. p.user_id,
  764. p.grade,
  765. p.referrer_id,
  766. u.`status`,
  767. (SELECT t.approve_time FROM sys_user_track t WHERE t.user_id = p.user_id ORDER BY t.approve_time LIMIT 1) approve_time
  768. FROM partner_user p
  769. LEFT JOIN sys_user u ON u.id = p.user_id
  770. WHERE p.referrer_id = #{userId} AND p.grade = #{number}
  771. ) db
  772. <where>
  773. <if test="period.startDate != null and period.endDate != null">
  774. db.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
  775. </if>
  776. </where>
  777. </select>
  778. <select id="selectNumber4" resultType="java.lang.Integer">
  779. SELECT
  780. COUNT( p.user_id )
  781. FROM
  782. partner_user p
  783. LEFT JOIN sys_user_track t ON t.user_id = p.user_id
  784. WHERE
  785. t.`status` = 1 AND grade = #{number}
  786. <if test="period.startDate != null and period.endDate != null">
  787. AND t.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
  788. </if>
  789. AND p.referrer_id = #{userId}
  790. </select>
  791. <select id="selectByUserIdNumber" resultType="java.lang.Integer">
  792. SELECT
  793. COUNT( p.user_id )
  794. FROM
  795. partner_user p
  796. LEFT JOIN sys_user_track t ON t.user_id = p.user_id
  797. WHERE
  798. t.`status` = 1 AND grade = #{number}
  799. <if test="period.startDate != null and period.endDate != null">
  800. AND t.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
  801. </if>
  802. AND p.referrer_id = #{userId}
  803. </select>
  804. <select id="queryManager" resultType="java.lang.String">
  805. WITH RECURSIVE cte_name AS (
  806. SELECT
  807. user_id,
  808. referrer_id,
  809. grade,
  810. CAST(user_id AS CHAR(200)) AS path
  811. FROM partner_user
  812. WHERE user_id = #{issuerId}
  813. UNION ALL
  814. SELECT
  815. t.user_id,
  816. t.referrer_id,
  817. t.grade,
  818. CONCAT(cte_name.path, '->', t.user_id)
  819. FROM partner_user t
  820. INNER JOIN cte_name
  821. ON t.user_id = cte_name.referrer_id
  822. WHERE
  823. cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  824. )
  825. SELECT user_id FROM cte_name WHERE grade = 3
  826. </select>
  827. <select id="getGzsList" resultType="java.lang.String">
  828. WITH RECURSIVE cte_name AS (
  829. SELECT
  830. user_id,
  831. referrer_id,
  832. grade,
  833. CAST(user_id AS CHAR(200)) AS path
  834. FROM partner_user
  835. WHERE user_id = #{issuerId}
  836. UNION ALL
  837. SELECT
  838. t.user_id,
  839. t.referrer_id,
  840. t.grade,
  841. CONCAT(cte_name.path, '->', t.user_id)
  842. FROM partner_user t
  843. INNER JOIN cte_name
  844. ON t.user_id = cte_name.referrer_id
  845. WHERE
  846. cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  847. )
  848. SELECT user_id FROM cte_name WHERE grade = 3
  849. </select>
  850. <select id="getTdList" resultType="java.lang.String">
  851. WITH RECURSIVE cte_name AS (
  852. SELECT
  853. user_id,
  854. referrer_id,
  855. grade,
  856. CAST(user_id AS CHAR(200)) AS path
  857. FROM partner_user
  858. WHERE user_id = #{issuerId}
  859. UNION ALL
  860. SELECT
  861. t.user_id,
  862. t.referrer_id,
  863. t.grade,
  864. CONCAT(cte_name.path, '->', t.user_id)
  865. FROM partner_user t
  866. INNER JOIN cte_name
  867. ON t.user_id = cte_name.referrer_id
  868. WHERE
  869. cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  870. )
  871. SELECT user_id FROM cte_name WHERE grade = 4
  872. </select>
  873. <select id="queryUser" resultType="com.ydtech.modules.partner.model.PartnerUser">
  874. SELECT * from partner_user where user_id = #{referrerId} and grade = #{grade}
  875. </select>
  876. <select id="queryByUserId" resultType="com.ydtech.modules.partner.model.PartnerUser">
  877. SELECT * from partner_user where user_id = #{referrerId} order by grade desc
  878. </select>
  879. <select id="assessment" resultType="java.lang.Integer">
  880. SELECT
  881. COUNT( 1 )
  882. FROM
  883. partner_user u
  884. LEFT JOIN sys_user_track t ON u.user_id = t.user_id
  885. WHERE u.referrer_id = #{userId} and u.grade = #{grade}
  886. <if test="period.startDate != null and period.endDate != null">
  887. AND t.approve_time BETWEEN #{period.startDate} AND #{period.endDate}
  888. </if>
  889. </select>
  890. <select id="selectTotalSumPremium" resultType="java.math.BigDecimal">
  891. SELECT SUM(DISTINCT sumpremium) FROM partner_premium_details WHERE user_id IN(
  892. WITH RECURSIVE cte_name AS (
  893. SELECT
  894. user_id,
  895. referrer_id,
  896. CAST(user_id AS CHAR(200)) AS path
  897. FROM partner_user
  898. WHERE user_id = #{userId} AND grade = #{grade}
  899. UNION ALL
  900. SELECT
  901. t.user_id,
  902. t.referrer_id,
  903. CONCAT(cte_name.path, '->', t.user_id)
  904. FROM partner_user t
  905. INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
  906. WHERE cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  907. )
  908. SELECT DISTINCT user_id FROM cte_name
  909. )
  910. <if test="period.startDate != null and period.endDate != null">
  911. AND create_time BETWEEN #{period.startDate} AND #{period.endDate}
  912. </if>
  913. </select>
  914. <select id="querySuperiors" resultType="java.lang.String">
  915. WITH RECURSIVE cte_name AS (
  916. SELECT
  917. user_id,
  918. referrer_id,
  919. grade,
  920. CAST(user_id AS CHAR(200)) AS path
  921. FROM partner_user
  922. WHERE user_id = #{userId}
  923. UNION ALL
  924. SELECT
  925. t.user_id,
  926. t.referrer_id,
  927. t.grade,
  928. CONCAT(cte_name.path, '->', t.user_id)
  929. FROM partner_user t INNER JOIN cte_name ON t.user_id = cte_name.referrer_id
  930. WHERE cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  931. )
  932. SELECT user_id FROM cte_name WHERE grade = #{grade}
  933. </select>
  934. <select id="querySubordinateUserId" resultType="java.lang.String">
  935. WITH RECURSIVE cte_name AS (
  936. SELECT
  937. user_id,
  938. referrer_id,
  939. grade,
  940. CAST(user_id AS CHAR(200)) AS path
  941. FROM partner_user
  942. WHERE referrer_id = #{levelUserId} AND grade = '5'
  943. UNION ALL
  944. SELECT
  945. t.user_id,
  946. t.referrer_id,
  947. t.grade,
  948. CONCAT(cte_name.path, '->', t.user_id)
  949. FROM partner_user t INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
  950. WHERE t.grade = (cte_name.grade + 1) and cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  951. )
  952. SELECT user_id FROM cte_name
  953. </select>
  954. <select id="querySubordinate" resultType="java.lang.String">
  955. WITH RECURSIVE cte_name AS (
  956. SELECT
  957. user_id,
  958. referrer_id,
  959. grade,
  960. CAST(user_id AS CHAR(200)) AS path
  961. FROM partner_user
  962. WHERE referrer_id IN(SELECT user_id FROM partner_user WHERE user_id = #{levelUserId} AND grade = '4') AND grade = '5'
  963. UNION ALL
  964. SELECT
  965. t.user_id,
  966. t.referrer_id,
  967. t.grade,
  968. CONCAT(cte_name.path, '->', t.user_id)
  969. FROM partner_user t INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
  970. WHERE t.grade = (cte_name.grade + 1) and cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  971. )
  972. SELECT user_id FROM cte_name
  973. </select>
  974. <select id="getLevelAllUserId" resultType="java.lang.String">
  975. WITH RECURSIVE cte_name AS (
  976. SELECT
  977. user_id,
  978. referrer_id,
  979. grade,
  980. CAST(user_id AS CHAR(200)) AS path
  981. FROM partner_user
  982. WHERE user_id = #{userId} AND grade = (SELECT min(grade) FROM partner_user WHERE user_id = #{userId})
  983. UNION ALL
  984. SELECT
  985. t.user_id,
  986. t.referrer_id,
  987. t.grade,
  988. CONCAT(cte_name.path, '->', t.user_id)
  989. FROM partner_user t INNER JOIN cte_name ON t.referrer_id = cte_name.user_id
  990. WHERE t.grade = (cte_name.grade + 1) and cte_name.path NOT LIKE CONCAT('%->', t.user_id, '%')
  991. )
  992. SELECT user_id FROM cte_name
  993. </select>
  994. <select id="countLevel" resultType="java.lang.Integer"></select>
  995. </mapper>