EsmUserReferrerMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ydtech.modules.esm.dao.EsmUserReferrerMapper">
  6. <resultMap id="SysUserMap" type="com.ydtech.modules.admin.model.SysUser">
  7. </resultMap>
  8. <resultMap id="QueryChannelMap" type="com.ydtech.modules.esm.model.QueryChannel">
  9. </resultMap>
  10. <select id="queryOrderCount" resultType="com.ydtech.modules.esm.model.vo.EsmUserPolicyVO">
  11. select a.id,
  12. a.username,
  13. a.mobile,
  14. a.policynum as ordernum,
  15. a.sumpremium as sumpremium,
  16. b.policynum as bjpolicynum,
  17. b.sumpremium as bjsumpremium,
  18. c.policynum as policynum,
  19. c.policynum / a.policynum as averagePremium
  20. from (
  21. SELECT
  22. su.id,
  23. su.NAME AS username,
  24. su.mobile as mobile,
  25. COALESCE ( count( iac.id ), 0 ) AS policynum,
  26. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  27. FROM
  28. sys_user su
  29. LEFT JOIN ins_orders io ON io.userid = su.id
  30. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  31. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  32. AND iac.orderstatus = 3
  33. WHERE
  34. su.id IN
  35. <foreach item="item" index="index" collection="userList" open="(" separator="," close=")">
  36. #{item}
  37. </foreach>
  38. GROUP BY
  39. su.id,
  40. su.NAME
  41. ) a,
  42. (
  43. SELECT
  44. su.id,
  45. su.NAME AS username,
  46. COALESCE ( count( iac.id ), 0 ) AS policynum,
  47. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  48. FROM
  49. sys_user su
  50. LEFT JOIN ins_orders io ON io.userid = su.id
  51. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  52. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  53. WHERE
  54. su.id IN
  55. <foreach item="item" index="index" collection="userList" open="(" separator="," close=")">
  56. #{item}
  57. </foreach>
  58. GROUP BY
  59. su.id,
  60. su.NAME
  61. )b,
  62. (
  63. SELECT
  64. su.id,
  65. su.NAME AS username,
  66. COALESCE ( count( iac.id ), 0 ) AS policynum,
  67. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  68. FROM
  69. sys_user su
  70. LEFT JOIN ins_orders io ON io.userid = su.id
  71. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  72. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  73. AND iac.orderstatus = 2
  74. WHERE
  75. su.id IN
  76. <foreach item="item" index="index" collection="userList" open="(" separator="," close=")">
  77. #{item}
  78. </foreach>
  79. GROUP BY
  80. su.id,
  81. su.NAME
  82. )c
  83. where a.id = b.id and b.id = c.id
  84. </select>
  85. <select id="queryOrderCountHz" resultType="com.ydtech.modules.esm.model.vo.EsmTeamPolicyVO">
  86. SELECT
  87. sum(jqpremium + sypremium + jypremium) sumpremium
  88. FROM
  89. ins_orders io
  90. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  91. LEFT JOIN sys_user su ON io.userid = su.id
  92. WHERE
  93. iac.orderstatus = 3
  94. AND io.orderstatus = 3
  95. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  96. AND io.userid in
  97. <foreach item="item" index="index" collection="userList" open="(" separator="," close=")">
  98. #{item}
  99. </foreach>
  100. </select>
  101. <select id="queryOrderCountHzNew" resultType="com.ydtech.modules.esm.model.vo.EsmTeamPolicyVO">
  102. SELECT
  103. sum(iac.sumpremium) sumpremium
  104. FROM
  105. ins_orders io
  106. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  107. LEFT JOIN sys_user su ON io.userid = su.id
  108. WHERE
  109. iac.orderstatus = 3
  110. AND io.orderstatus = 3
  111. <if test="startDate !=null and startDate !='' and endDate!=null and endDate!='' ">
  112. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  113. </if>
  114. AND io.userid in
  115. <foreach item="item" index="index" collection="userList" open="(" separator="," close=")">
  116. #{item}
  117. </foreach>
  118. </select>
  119. <select id="getUserPage" resultMap="SysUserMap">
  120. SELECT
  121. su.*
  122. FROM
  123. esm_user_referrer eur
  124. LEFT JOIN sys_user su ON su.id = eur.id
  125. WHERE
  126. su.id != 'admin'
  127. AND su.STATUS = 1
  128. AND referrer_id IS NOT NULL
  129. <if test="dto.userId != null and dto.userId != ''">
  130. AND su.id = #{dto.userId}
  131. </if>
  132. <if test="dto.name != null and dto.name != ''">
  133. AND su.name = #{dto.name}
  134. </if>
  135. <if test="dto.mobile != null and dto.mobile != ''">
  136. AND su.mobile = #{dto.mobile}
  137. </if>
  138. </select>
  139. <select id="getQueryChannelPage" resultMap="QueryChannelMap">
  140. SELECT
  141. sd.id as deptId,
  142. sd.name as deptName,
  143. sd.address,
  144. count( su.id ) AS count
  145. FROM
  146. sys_dept sd
  147. LEFT JOIN sys_user su ON su.dept_id = sd.id
  148. WHERE
  149. management_source = 1
  150. <if test="queryChannel.deptId != null and queryChannel.deptId != ''">
  151. AND sd.id = #{queryChannel.deptId}
  152. </if>
  153. <if test="queryChannel.deptName != null and queryChannel.deptName != ''">
  154. AND sd.name = #{queryChannel.deptName}
  155. </if>
  156. GROUP BY
  157. sd.id
  158. </select>
  159. <select id="getByTeam" resultType="com.ydtech.modules.admin.model.dto.SysUserTeamDto">
  160. with recursive t1 as (select *
  161. from esm_user_referrer
  162. WHERE referrer_id = #{userId}
  163. and id !=#{userId}
  164. union all
  165. select r1.*
  166. from esm_user_referrer r1
  167. INNER JOIN t1 on t1.id = r1.referrer_id
  168. WHERE r1.level &lt; #{level})
  169. select u.id as id , u.name as name , u.mobile as mobile, u.status as status
  170. from t1
  171. LEFT JOIN sys_user u on t1.id = u.id
  172. where 1=1
  173. <if test="managementQueryVo.criteria != null and managementQueryVo.criteria != ''">
  174. and ( u.id = #{managementQueryVo.criteria}
  175. or u.name = #{managementQueryVo.criteria}
  176. or u.mobile = #{managementQueryVo.criteria})
  177. </if>
  178. <choose>
  179. <when test="managementQueryVo.authenticationStatus == '-1' ">
  180. AND u.status != 1
  181. </when>
  182. <when test="managementQueryVo.authenticationStatus != null and managementQueryVo.authenticationStatus != ''">
  183. AND u.status = #{managementQueryVo.authenticationStatus}
  184. </when>
  185. </choose>
  186. </select>
  187. <select id="employeeIncreaseReportYear" resultType="com.ydtech.modules.admin.model.dto.EmployeeIncreaseReportDto">
  188. SELECT
  189. CONCAT(YEAR(us.create_time),'-',LPAD(MONTH(us.create_time), 2, '0')) reportDate,
  190. count(0) as employeeIncreaseCount
  191. FROM
  192. esm_user_referrer eur
  193. LEFT JOIN sys_user us ON eur.id = us.id
  194. WHERE
  195. us.create_time &gt;= #{beginTime} and us.create_time &lt;= #{endTime}
  196. <if test="ids != null and ids.size() > 0">
  197. and eur.id in
  198. <foreach collection="ids" item="item" open="(" separator="," close=")">
  199. #{item}
  200. </foreach>
  201. </if>
  202. GROUP BY CONCAT(YEAR(us.create_time),'-',LPAD(MONTH(us.create_time), 2, '0'))
  203. </select>
  204. <select id="employeeIncreaseReportMonth" resultType="com.ydtech.modules.admin.model.dto.EmployeeIncreaseReportDto">
  205. SELECT
  206. CONCAT(YEAR(us.create_time),'-',LPAD(MONTH(us.create_time), 2, '0'),'-',LPAD(Day(us.create_time), 2, '0')) reportDate,
  207. count(0) as employeeIncreaseCount
  208. FROM
  209. esm_user_referrer eur
  210. LEFT JOIN sys_user us ON eur.id = us.id
  211. WHERE
  212. us.create_time &gt;= #{beginTime} and us.create_time &lt;= #{endTime}
  213. <if test="ids != null and ids.size() > 0">
  214. and eur.id in
  215. <foreach collection="ids" item="item" open="(" separator="," close=")">
  216. #{item}
  217. </foreach>
  218. </if>
  219. GROUP BY CONCAT(YEAR(us.create_time),'-',LPAD(MONTH(us.create_time), 2, '0'),'-',LPAD(Day(us.create_time), 2, '0'))
  220. </select>
  221. <select id="employeeIncreaseReportDay" resultType="com.ydtech.modules.admin.model.dto.EmployeeIncreaseReportDto">
  222. SELECT
  223. CONCAT(YEAR ( us.create_time ),'-',LPAD( MONTH ( us.create_time ), 2, '0' ),'-',LPAD( DAY ( us.create_time ), 2, '0' ),' ',LPAD( HOUR ( us.create_time ), 2, '0' ))
  224. reportDate,
  225. count( 0 ) AS employeeIncreaseCount
  226. FROM
  227. esm_user_referrer eur
  228. LEFT JOIN sys_user us ON eur.id = us.id
  229. WHERE
  230. us.create_time &gt;= #{beginTime} and us.create_time &lt;= #{endTime}
  231. <if test="ids != null and ids.size() > 0">
  232. and eur.id in
  233. <foreach collection="ids" item="item" open="(" separator="," close=")">
  234. #{item}
  235. </foreach>
  236. </if>
  237. GROUP BY CONCAT(YEAR ( us.create_time ),'-',LPAD( MONTH ( us.create_time ), 2, '0' ),'-',LPAD( DAY ( us.create_time ), 2, '0' ),' ',LPAD( HOUR ( us.create_time ), 2, '0' ))
  238. </select>
  239. <select id="queryOrderCountForUser" resultType="com.ydtech.modules.esm.model.vo.EsmUserPolicyForUserVO">
  240. select a.companyId as companyId,
  241. a.companyName as companyName,
  242. a.policynum as bjpolicynum,
  243. a.sumpremium as bjsumpremium,
  244. b.policynum as ordernum,
  245. b.sumpremium as sumpremium,
  246. c.policynum as policynum,
  247. (select logo from esm_ins_company where id=a.companyId) as logo
  248. from (
  249. SELECT
  250. iac.company_id AS companyId,
  251. iac.inscompany AS companyName,
  252. COALESCE ( count( iac.company_id ), 0 ) AS policynum,
  253. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  254. FROM
  255. sys_user su
  256. LEFT JOIN ins_orders io ON io.userid = su.id
  257. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  258. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  259. WHERE
  260. su.id = #{userId}
  261. GROUP BY
  262. iac.company_id,
  263. iac.inscompany
  264. ) a left join
  265. (
  266. SELECT
  267. iac.company_id AS companyId,
  268. iac.inscompany AS companyName,
  269. COALESCE ( count( iac.company_id ), 0 ) AS policynum,
  270. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  271. FROM
  272. sys_user su
  273. LEFT JOIN ins_orders io ON io.userid = su.id
  274. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  275. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  276. AND iac.orderstatus = 3
  277. WHERE
  278. su.id = #{userId}
  279. GROUP BY
  280. iac.company_id,
  281. iac.inscompany
  282. )b on a.companyId = b.companyId
  283. left join
  284. (
  285. SELECT
  286. iac.company_id AS companyId,
  287. iac.inscompany AS companyName,
  288. COALESCE ( count( iac.company_id ), 0 ) AS policynum,
  289. COALESCE ( sum( jqpremium + sypremium + jypremium ), 0 ) AS sumpremium
  290. FROM
  291. sys_user su
  292. LEFT JOIN ins_orders io ON io.userid = su.id
  293. AND io.createtime BETWEEN #{startDate} AND #{endDate}
  294. LEFT JOIN ins_area_company iac ON io.orderno = iac.orderno
  295. AND iac.orderstatus = 2
  296. WHERE
  297. su.id = #{userId}
  298. GROUP BY
  299. iac.company_id,
  300. iac.inscompany
  301. )c on a.companyId = c.companyId
  302. where a.companyId is not null
  303. </select>
  304. <select id="getbyUserNextLevel" resultType="com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO">
  305. SELECT
  306. eur.id as "id",
  307. eur.level as "level",
  308. su.name as "userName",
  309. eur.referrer_id as "referrerId"
  310. FROM
  311. esm_user_referrer eur
  312. LEFT JOIN sys_user su ON su.id = eur.id
  313. <where>
  314. su.id != 'admin'
  315. AND su.STATUS = 1
  316. AND referrer_id IS NOT NULL
  317. <if test="userId !=null and userId !=''">
  318. AND eur.referrer_id =#{userId}
  319. </if>
  320. </where>
  321. </select>
  322. <select id="getUserLevel" resultType="com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO">
  323. SELECT
  324. eur.id as "id",
  325. eur.level as "level",
  326. eur.affiliation as "affiliation",
  327. eur.referrer_id as "referrerId",
  328. su.status as "status",
  329. su.name as "userName"
  330. FROM
  331. esm_user_referrer eur
  332. LEFT JOIN sys_user su ON su.id = eur.id
  333. LEFT JOIN sys_dept sd ON sd.id = su.dept_id
  334. <where>
  335. su.id != 'admin'
  336. AND su.STATUS = 1
  337. AND referrer_id IS NOT NULL
  338. <if test="vo.userId !=null and vo.userId !=''">
  339. AND eur.referrer_id =#{vo.userId}
  340. </if>
  341. <if test="vo.level !=null and vo.level !=''">
  342. AND eur.level =#{vo.level}
  343. </if>
  344. <if test="vo.managementSource !=null and vo.managementSource !=''">
  345. AND sd.management_source =#{vo.managementSource}
  346. </if>
  347. <if test="vo.ids != null and vo.ids.size()>0 ">
  348. AND eur.referrer_id IN
  349. <foreach item="item" collection="vo.ids" open="(" separator="," close=")">
  350. #{item}
  351. </foreach>
  352. </if>
  353. <if test="vo.provinceId != null and vo.provinceId != ''">
  354. and sd.id like concat('%',#{vo.provinceId},'%')
  355. </if>
  356. <if test="vo.cityId != null and vo.cityId != ''">
  357. and sd.id like concat('%',#{vo.cityId},'%')
  358. </if>
  359. <if test="vo.countyId != null and vo.countyId != ''">
  360. and sd.id like concat('%',#{vo.countyId},'%')
  361. </if>
  362. <if test="vo.houseId != null and vo.houseId != ''">
  363. and sd.id like concat('%',#{vo.houseId},'%')
  364. </if>
  365. <if test="vo.deptId != null and vo.deptId != ''">
  366. and sd.id like concat('%',#{vo.deptId},'%')
  367. </if>
  368. </where>
  369. </select>
  370. <select id="getUserIdsByUserId" resultType="com.ydtech.modules.admin.model.dto.SysUserTeamDto">
  371. with recursive t1 as (select *
  372. from esm_user_referrer
  373. WHERE referrer_id =#{userId}
  374. and id !=#{userId}
  375. union all
  376. select r1.*
  377. from esm_user_referrer r1
  378. INNER JOIN t1 on t1.id = r1.referrer_id
  379. )
  380. select u.id as id , u.name as name , u.mobile as mobile, u.status as status
  381. from t1
  382. LEFT JOIN sys_user u on t1.id = u.id
  383. WHERE u.id is not null
  384. </select>
  385. <select id="getByTeamByLevel" resultType="com.ydtech.modules.admin.model.dto.SysUserTeamDto">
  386. with recursive t1 as (select *
  387. from esm_user_referrer
  388. WHERE referrer_id = #{userId}
  389. and id !=#{userId}
  390. union all
  391. select r1.*
  392. from esm_user_referrer r1
  393. INNER JOIN t1 on t1.id = r1.referrer_id
  394. )
  395. select u.id as id , u.name as name , u.mobile as mobile, u.status as status
  396. from t1
  397. LEFT JOIN sys_user u on t1.id = u.id
  398. <where>
  399. u.id is not null
  400. <if test="status != null and status != ''">
  401. AND u.status = #{status}
  402. </if>
  403. <if test="level != null and level != ''">
  404. AND t1.level = #{level}
  405. </if>
  406. </where>
  407. </select>
  408. </mapper>