SysDistributionSettingMapper.xml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  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.jzg.organization.mapper.SysDistributionSettingMapper">
  4. <select id="distributorList" resultType="com.jzg.commons.entity.vo.SysDistributionListVo">
  5. select
  6. suji.id as id,
  7. suji.name as name,
  8. sd.name as deptName,
  9. suji.type_attr as typeAttr,
  10. su.mobile as mobile,
  11. suji.referrer_id as inviteePersonId,
  12. suji2.name as inviteePerson,
  13. suji.distribution_time as joinTime
  14. from sys_user_jzg_info suji
  15. left join sys_user su on suji.user_id = su.id AND su.is_delete = 0
  16. left join sys_dept sd on sd.id = suji.dept_id AND sd.is_delete = 0
  17. left join sys_user_jzg_info suji2 on suji2.id = suji.referrer_id AND suji2.is_delete = 0
  18. <where>
  19. suji.is_delete = 0
  20. and suji.is_distribution = 1
  21. <if test="sysDistributionListVo.name != null and sysDistributionListVo.name != ''">
  22. and suji.name = #{sysDistributionListVo.name}
  23. </if>
  24. <if test="sysDistributionListVo.mobile != null and sysDistributionListVo.mobile != ''">
  25. and su.mobile = #{sysDistributionListVo.mobile}
  26. </if>
  27. <if test ="sysDistributionListVo.inviteePerson != null and sysDistributionListVo.inviteePerson != ''">
  28. and suji2.name = #{sysDistributionListVo.inviteePerson}
  29. </if>
  30. <if test="sysDistributionListVo.joinTimeStart != null and sysDistributionListVo.joinTimeStart != ''">
  31. and suji.distribution_time between #{sysDistributionListVo.joinTimeStart} and #{sysDistributionListVo.joinTimeEnd}
  32. </if>
  33. </where>
  34. ORDER BY suji.id DESC
  35. </select>
  36. <select id="distributorAuditList" resultType="com.jzg.commons.entity.vo.SysDistributionAuditListVo">
  37. select
  38. sda.id as id,
  39. sda.remark as remark,
  40. suji.name as name,
  41. sd.name as deptName,
  42. suji.type_attr as typeAttr,
  43. su.mobile as mobile,
  44. sda.apply_time as applyTime,
  45. sda.audit_time as auditTime,
  46. suji3.name as auditPerson,
  47. suji.referrer_id as referrerId,
  48. suji2.name as referrerName
  49. from sys_distribution_audit sda
  50. left join sys_user_jzg_info suji on sda.sys_user_jzg_info_id = suji.id AND suji.is_delete = 0
  51. left join sys_user su on suji.user_id = su.id AND su.is_delete = 0
  52. left join sys_dept sd on sd.id = suji.dept_id AND sd.is_delete = 0
  53. left join sys_user_jzg_info suji2 on suji2.id = suji.referrer_id AND suji2.is_delete = 0
  54. left join sys_user su2 on su2.mobile = sda.audit_by AND su2.is_delete = 0
  55. LEFT JOIN sys_user_jzg_info suji3 ON suji3.user_id = su2.id AND suji3.is_delete = 0
  56. <where>
  57. sda.is_delete = 0
  58. <if test="sysDistributionAuditVo.name != null and sysDistributionAuditVo.name != ''">
  59. and suji.name = #{sysDistributionAuditVo.name}
  60. </if>
  61. <if test="sysDistributionAuditVo.mobile != null and sysDistributionAuditVo.mobile != ''">
  62. and su.mobile = #{sysDistributionAuditVo.mobile}
  63. </if>
  64. <if test ="sysDistributionAuditVo.inviteePerson != null and sysDistributionAuditVo.inviteePerson != ''">
  65. and suji2.name = #{sysDistributionAuditVo.inviteePerson}
  66. </if>
  67. <if test="sysDistributionAuditVo.applyTimeStart != null">
  68. and sda.apply_time between #{sysDistributionAuditVo.applyTimeStart} and #{sysDistributionAuditVo.applyTimeEnd}
  69. </if>
  70. <if test="sysDistributionAuditVo.auditStatus != null and sysDistributionAuditVo.auditStatus != ''">
  71. and sda.audit_status = #{sysDistributionAuditVo.auditStatus}
  72. </if>
  73. <if test="sysDistributionAuditVo.systemCode != null and sysDistributionAuditVo.systemCode != ''">
  74. and suji.system_code = #{sysDistributionAuditVo.systemCode}
  75. </if>
  76. <if test="sysDistributionAuditVo.auditPerson != null and sysDistributionAuditVo.auditPerson != ''">
  77. and sda.audit_by = #{sysDistributionAuditVo.auditPerson}
  78. </if>
  79. <if test="sysDistributionAuditVo.auditTimeStart != null">
  80. and sda.audit_time between #{sysDistributionAuditVo.auditTimeStart} and #{sysDistributionAuditVo.auditTimeEnd}
  81. </if>
  82. </where>
  83. ORDER BY sda.id DESC
  84. </select>
  85. <select id="commissionDetails" resultType="com.jzg.commons.entity.vo.DistributionCommissionDetailVo">
  86. SELECT
  87. ifo.order_no AS orderNo,
  88. ifo.total_premium AS premium,
  89. io.real_quote_user_id AS salesman,
  90. io.real_quote_user_id AS salesmanMobile,
  91. io.signing_time AS signingTime,
  92. suji.name as distributor,
  93. su.mobile as distributorMobile,
  94. ifo.first_distribution_fee as commission,
  95. ifo.first_distribution_ratio AS distributionRatio,
  96. '1' AS distributionLevel -- 标识为一级分销
  97. FROM
  98. ins_fee_orders ifo
  99. LEFT JOIN ins_orders io ON ifo.order_no = io.id
  100. LEFT JOIN sys_user_jzg_info suji ON ifo.first_distributor_id = suji.id AND suji.is_delete = 0
  101. left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
  102. WHERE
  103. ifo.is_delete = 0
  104. and ifo.first_distributor_id IS NOT NULL
  105. <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
  106. and suji.name = #{distributionCommissionDetailVo.distributor}
  107. </if>
  108. <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
  109. and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
  110. </if>
  111. <if test="distributionCommissionDetailVo.signingTimeStart != null">
  112. and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
  113. </if>
  114. UNION ALL
  115. SELECT
  116. ifo.order_no AS orderNo,
  117. ifo.total_premium AS premium,
  118. io.real_quote_user_id AS salesman,
  119. io.real_quote_user_id AS salesmanMobile,
  120. io.signing_time AS signingTime,
  121. suji.name as distributor,
  122. su.mobile as distributorMobile,
  123. ifo.second_distribution_fee as commission,
  124. ifo.second_distribution_ratio AS distributionRatio,
  125. '2' AS distributionLevel -- 标识为二级分销
  126. FROM
  127. ins_fee_orders ifo
  128. LEFT JOIN ins_orders io ON ifo.order_no = io.id
  129. LEFT JOIN sys_user_jzg_info suji ON ifo.second_distributor_id = suji.id AND suji.is_delete = 0
  130. left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
  131. WHERE
  132. ifo.is_delete = 0
  133. and ifo.second_distributor_id IS NOT NULL
  134. <if test="distributionCommissionDetailVo.signingTimeStart != null">
  135. and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
  136. </if>
  137. <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
  138. and suji.name = #{distributionCommissionDetailVo.distributor}
  139. </if>
  140. <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
  141. and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
  142. </if>
  143. UNION ALL
  144. SELECT
  145. ifo.order_no AS orderNo,
  146. ifo.total_premium AS premium,
  147. io.real_quote_user_id AS salesman,
  148. io.real_quote_user_id AS salesmanMobile,
  149. io.signing_time AS signingTime,
  150. suji.name AS distributor,
  151. su.mobile as distributorMobile,
  152. ifo.third_distribution_fee as commission,
  153. ifo.third_distribution_ratio AS distributionRatio,
  154. '3' AS distributionLevel
  155. FROM
  156. ins_fee_orders ifo
  157. LEFT JOIN ins_orders io ON ifo.order_no = io.id
  158. LEFT JOIN sys_user_jzg_info suji ON ifo.third_distributor_id = suji.id AND suji.is_delete = 0
  159. left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
  160. WHERE
  161. ifo.is_delete = 0
  162. and ifo.third_distributor_id IS NOT NULL
  163. <if test="distributionCommissionDetailVo.signingTimeStart != null">
  164. and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
  165. </if>
  166. <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
  167. and suji.name = #{distributionCommissionDetailVo.distributor}
  168. </if>
  169. <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
  170. and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
  171. </if>
  172. ORDER BY
  173. orderNo,
  174. distributionLevel
  175. </select>
  176. <select id="distributionTeam" resultType="com.jzg.commons.entity.vo.DistributionTeamVo">
  177. SELECT
  178. suji.id as id,
  179. suji.NAME AS name,
  180. suji1.name AS inviteePerson,
  181. su.mobile as mobile,
  182. sda.audit_approval_time as joinTime,
  183. 1 as level
  184. FROM
  185. esm_user_referrer eur1
  186. LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
  187. LEFT JOIN sys_user_jzg_info suji1 ON suji1.id = eur1.referrer_id AND suji1.is_delete = 0
  188. LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
  189. left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
  190. WHERE
  191. eur1.is_delete = 0
  192. and eur1.referrer_id = #{topReferrerId}
  193. and sda.audit_status = '1'
  194. AND suji.id IS NOT NULL
  195. <if test="maxLevel >= 2">
  196. UNION ALL
  197. SELECT
  198. suji2.id as id,
  199. suji2.NAME AS name,
  200. suji.name AS inviteePerson,
  201. su2.mobile as mobile,
  202. sda.audit_approval_time as joinTime,
  203. 2 as level
  204. FROM
  205. esm_user_referrer eur1
  206. LEFT JOIN esm_user_referrer eur2 ON eur2.referrer_id = eur1.id
  207. LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
  208. LEFT JOIN sys_user_jzg_info suji2 ON suji2.id = eur2.id AND suji2.is_delete = 0
  209. LEFT JOIN sys_user su2 ON su2.id = suji2.user_id AND su2.is_delete = 0
  210. left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
  211. WHERE
  212. eur1.referrer_id = #{topReferrerId}
  213. and sda.audit_status = '1'
  214. AND suji2.id IS NOT NULL
  215. </if>
  216. <if test="maxLevel >= 3">
  217. UNION ALL
  218. SELECT
  219. suji3.id as id,
  220. suji3.NAME AS name,
  221. suji2.name AS inviteePerson,
  222. su3.mobile as mobile,
  223. sda.audit_approval_time as joinTime,
  224. 3 as level
  225. FROM
  226. esm_user_referrer eur1
  227. LEFT JOIN esm_user_referrer eur2 ON eur2.referrer_id = eur1.id
  228. LEFT JOIN esm_user_referrer eur3 ON eur3.referrer_id = eur2.id
  229. LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
  230. LEFT JOIN sys_user_jzg_info suji2 ON suji2.id = eur2.id AND suji2.is_delete = 0
  231. LEFT JOIN sys_user_jzg_info suji3 ON suji3.id = eur3.id AND suji3.is_delete = 0
  232. LEFT JOIN sys_user su3 ON su3.id = suji3.user_id AND su3.is_delete = 0
  233. left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
  234. WHERE
  235. eur1.referrer_id = #{topReferrerId}
  236. and sda.audit_status = '1'
  237. AND suji3.id IS NOT NULL
  238. </if>
  239. ORDER BY eur1.id DESC
  240. </select>
  241. <select id="getDistributionOrder" resultType="com.jzg.commons.entity.vo.DistributionOrder">
  242. SELECT
  243. suji.id AS userId,
  244. suji.NAME AS NAME,
  245. su.mobile AS mobile,
  246. suji1.name AS inviteePerson,
  247. ifo.order_no AS orderNo,
  248. ifo.total_premium as premium,
  249. io.signing_time as signingTime,
  250. ioci.license_no AS licenseNo,
  251. ifa.audit_status as auditStatus,
  252. CASE
  253. WHEN ifo.first_distributor_id = #{distributionOrderVo.userId} THEN 1
  254. WHEN ifo.second_distributor_id = #{distributionOrderVo.userId} THEN 2
  255. WHEN ifo.third_distributor_id = #{distributionOrderVo.userId} THEN 3
  256. END AS level
  257. FROM sys_user_jzg_info suji
  258. LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
  259. left join sys_user_jzg_info suji1 ON suji1.id = suji.referrer_id AND suji1.is_delete = 0
  260. LEFT JOIN ins_fee_orders ifo ON ifo.first_distributor_id = #{distributionOrderVo.userId}
  261. OR ifo.second_distributor_id = #{distributionOrderVo.userId}
  262. OR ifo.third_distributor_id = #{distributionOrderVo.userId}
  263. and ifo.is_delete = 0
  264. LEFT JOIN ins_fee_audit ifa ON CAST(ifo.order_no AS CHAR) = ifa.order_no AND ifa.is_delete = 0
  265. LEFT JOIN ins_orders io ON io.id = ifo.order_no and io.is_delete = 0
  266. LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id and ioci.is_delete = 0
  267. <where>
  268. suji.is_delete = 0
  269. <if test="distributionOrderVo.level == null">
  270. AND (
  271. ifo.first_distributor_id = #{distributionOrderVo.userId}
  272. OR ifo.second_distributor_id = #{distributionOrderVo.userId}
  273. OR ifo.third_distributor_id = #{distributionOrderVo.userId}
  274. )
  275. </if>
  276. <if test="distributionOrderVo.level != null">
  277. AND (
  278. CASE
  279. WHEN #{distributionOrderVo.level} = 1 THEN ifo.first_distributor_id = #{distributionOrderVo.userId}
  280. WHEN #{distributionOrderVo.level} = 2 THEN ifo.second_distributor_id = #{distributionOrderVo.userId}
  281. WHEN #{distributionOrderVo.level} = 3 THEN ifo.third_distributor_id = #{distributionOrderVo.userId}
  282. END
  283. )
  284. </if>
  285. <if test="distributionOrderVo.auditStatus != null">
  286. AND (
  287. CASE
  288. WHEN #{distributionOrderVo.auditStatus} = 1 THEN ifa.audit_status = 1
  289. WHEN #{distributionOrderVo.auditStatus} = 0 THEN ifa.audit_status IN (1, 2)
  290. END
  291. )
  292. </if>
  293. <if test="distributionOrderVo.signingTimeStart != null">
  294. and io.signing_time between #{distributionOrderVo.signingTimeStart} and #{distributionOrderVo.signingTimeEnd}
  295. </if>
  296. <if test="distributionOrderVo.userId != null">
  297. AND suji.id = #{distributionOrderVo.userId}
  298. </if>
  299. </where>
  300. order by io.signing_time desc
  301. </select>
  302. <select id="getDistributionOrderByLevel" resultType="com.jzg.commons.entity.vo.DistributionOrder">
  303. SELECT
  304. suji.id AS userId,
  305. suji.NAME AS NAME,
  306. su.mobile AS mobile,
  307. suji1.name AS inviteePerson,
  308. ifo.order_no AS orderNo,
  309. ifo.total_premium as premium,
  310. io.signing_time as signingTime,
  311. ioci.license_no AS licenseNo,
  312. CASE
  313. WHEN #{distributionOrderVo.level} = '1' THEN ifo.first_distribution_fee
  314. WHEN #{distributionOrderVo.level} = '2' THEN ifo.second_distribution_fee
  315. WHEN #{distributionOrderVo.level} = '3' THEN ifo.third_distribution_fee
  316. END AS commission,
  317. #{distributionOrderVo.level} AS level
  318. FROM sys_user_jzg_info suji
  319. LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
  320. left join sys_user_jzg_info suji1 ON suji1.id = suji.referrer_id AND suji1.is_delete = 0
  321. LEFT JOIN ins_fee_orders ifo on 1=1
  322. <if test="distributionOrderVo.level != null">
  323. <choose>
  324. <when test="distributionOrderVo.level == '1'">AND ifo.first_distributor_id = suji.id</when>
  325. <when test="distributionOrderVo.level == '2'">AND ifo.second_distributor_id = suji.id</when>
  326. <when test="distributionOrderVo.level == '3'">AND ifo.third_distributor_id = suji.id</when>
  327. </choose>
  328. </if>
  329. left join ins_fee_audit ifa on ifa.order_no = ifo.order_no and ifa.audit_status = 1 AND ifa.is_delete = 0
  330. LEFT JOIN ins_orders io ON io.id = ifo.order_no AND io.is_delete = 0
  331. LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id AND ioci.is_delete = 0
  332. <where>
  333. suji.is_delete = 0
  334. <if test="distributionOrderVo.userId != null and distributionOrderVo.userId != ''">
  335. AND suji.id = #{distributionOrderVo.userId}
  336. </if>
  337. <if test="distributionOrderVo.signingTimeStart != null">
  338. and io.signing_time between #{distributionOrderVo.signingTimeStart} and #{distributionOrderVo.signingTimeEnd}
  339. </if>
  340. </where>
  341. ORDER BY suji.id DESC
  342. </select>
  343. <select id="inviteeDistributor" resultType="com.jzg.commons.entity.vo.DistributionTeamVo">
  344. SELECT
  345. suji.id as id,
  346. suji.NAME AS name,
  347. suji1.name AS inviteePerson,
  348. su.mobile as mobile,
  349. sda.audit_approval_time as joinTime,
  350. #{level} as level
  351. FROM
  352. esm_user_referrer eur1
  353. LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
  354. LEFT JOIN sys_user_jzg_info suji1 ON suji1.id = eur1.referrer_id AND suji1.is_delete = 0
  355. LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
  356. left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
  357. <where>
  358. eur1.is_delete = 0
  359. and eur1.referrer_id = #{id}
  360. and sda.audit_status = '1'
  361. AND suji.id IS NOT NULL
  362. </where>
  363. ORDER BY suji.id DESC
  364. </select>
  365. </mapper>