| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.jzg.organization.mapper.SysDistributionSettingMapper">
- <select id="distributorList" resultType="com.jzg.commons.entity.vo.SysDistributionListVo">
- select
- suji.id as id,
- suji.name as name,
- sd.name as deptName,
- suji.type_attr as typeAttr,
- su.mobile as mobile,
- suji.referrer_id as inviteePersonId,
- suji2.name as inviteePerson,
- suji.distribution_time as joinTime
- from sys_user_jzg_info suji
- left join sys_user su on suji.user_id = su.id AND su.is_delete = 0
- left join sys_dept sd on sd.id = suji.dept_id AND sd.is_delete = 0
- left join sys_user_jzg_info suji2 on suji2.id = suji.referrer_id AND suji2.is_delete = 0
- <where>
- suji.is_delete = 0
- and suji.is_distribution = 1
- <if test="sysDistributionListVo.name != null and sysDistributionListVo.name != ''">
- and suji.name = #{sysDistributionListVo.name}
- </if>
- <if test="sysDistributionListVo.mobile != null and sysDistributionListVo.mobile != ''">
- and su.mobile = #{sysDistributionListVo.mobile}
- </if>
- <if test ="sysDistributionListVo.inviteePerson != null and sysDistributionListVo.inviteePerson != ''">
- and suji2.name = #{sysDistributionListVo.inviteePerson}
- </if>
- <if test="sysDistributionListVo.joinTimeStart != null and sysDistributionListVo.joinTimeStart != ''">
- and suji.distribution_time between #{sysDistributionListVo.joinTimeStart} and #{sysDistributionListVo.joinTimeEnd}
- </if>
- </where>
- ORDER BY suji.id DESC
- </select>
- <select id="distributorAuditList" resultType="com.jzg.commons.entity.vo.SysDistributionAuditListVo">
- select
- sda.id as id,
- sda.remark as remark,
- suji.name as name,
- sd.name as deptName,
- suji.type_attr as typeAttr,
- su.mobile as mobile,
- sda.apply_time as applyTime,
- sda.audit_time as auditTime,
- suji3.name as auditPerson,
- suji.referrer_id as referrerId,
- suji2.name as referrerName
- from sys_distribution_audit sda
- left join sys_user_jzg_info suji on sda.sys_user_jzg_info_id = suji.id AND suji.is_delete = 0
- left join sys_user su on suji.user_id = su.id AND su.is_delete = 0
- left join sys_dept sd on sd.id = suji.dept_id AND sd.is_delete = 0
- left join sys_user_jzg_info suji2 on suji2.id = suji.referrer_id AND suji2.is_delete = 0
- left join sys_user su2 on su2.mobile = sda.audit_by AND su2.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji3 ON suji3.user_id = su2.id AND suji3.is_delete = 0
- <where>
- sda.is_delete = 0
- <if test="sysDistributionAuditVo.name != null and sysDistributionAuditVo.name != ''">
- and suji.name = #{sysDistributionAuditVo.name}
- </if>
- <if test="sysDistributionAuditVo.mobile != null and sysDistributionAuditVo.mobile != ''">
- and su.mobile = #{sysDistributionAuditVo.mobile}
- </if>
- <if test ="sysDistributionAuditVo.inviteePerson != null and sysDistributionAuditVo.inviteePerson != ''">
- and suji2.name = #{sysDistributionAuditVo.inviteePerson}
- </if>
- <if test="sysDistributionAuditVo.applyTimeStart != null">
- and sda.apply_time between #{sysDistributionAuditVo.applyTimeStart} and #{sysDistributionAuditVo.applyTimeEnd}
- </if>
- <if test="sysDistributionAuditVo.auditStatus != null and sysDistributionAuditVo.auditStatus != ''">
- and sda.audit_status = #{sysDistributionAuditVo.auditStatus}
- </if>
- <if test="sysDistributionAuditVo.systemCode != null and sysDistributionAuditVo.systemCode != ''">
- and suji.system_code = #{sysDistributionAuditVo.systemCode}
- </if>
- <if test="sysDistributionAuditVo.auditPerson != null and sysDistributionAuditVo.auditPerson != ''">
- and sda.audit_by = #{sysDistributionAuditVo.auditPerson}
- </if>
- <if test="sysDistributionAuditVo.auditTimeStart != null">
- and sda.audit_time between #{sysDistributionAuditVo.auditTimeStart} and #{sysDistributionAuditVo.auditTimeEnd}
- </if>
- </where>
- ORDER BY sda.id DESC
- </select>
- <select id="commissionDetails" resultType="com.jzg.commons.entity.vo.DistributionCommissionDetailVo">
- SELECT
- ifo.order_no AS orderNo,
- ifo.total_premium AS premium,
- io.real_quote_user_id AS salesman,
- io.real_quote_user_id AS salesmanMobile,
- io.signing_time AS signingTime,
- suji.name as distributor,
- su.mobile as distributorMobile,
- ifo.first_distribution_fee as commission,
- ifo.first_distribution_ratio AS distributionRatio,
- '1' AS distributionLevel -- 标识为一级分销
- FROM
- ins_fee_orders ifo
- LEFT JOIN ins_orders io ON ifo.order_no = io.id
- LEFT JOIN sys_user_jzg_info suji ON ifo.first_distributor_id = suji.id AND suji.is_delete = 0
- left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
- WHERE
- ifo.is_delete = 0
- and ifo.first_distributor_id IS NOT NULL
- <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
- and suji.name = #{distributionCommissionDetailVo.distributor}
- </if>
- <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
- and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
- </if>
- <if test="distributionCommissionDetailVo.signingTimeStart != null">
- and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
- </if>
- UNION ALL
- SELECT
- ifo.order_no AS orderNo,
- ifo.total_premium AS premium,
- io.real_quote_user_id AS salesman,
- io.real_quote_user_id AS salesmanMobile,
- io.signing_time AS signingTime,
- suji.name as distributor,
- su.mobile as distributorMobile,
- ifo.second_distribution_fee as commission,
- ifo.second_distribution_ratio AS distributionRatio,
- '2' AS distributionLevel -- 标识为二级分销
- FROM
- ins_fee_orders ifo
- LEFT JOIN ins_orders io ON ifo.order_no = io.id
- LEFT JOIN sys_user_jzg_info suji ON ifo.second_distributor_id = suji.id AND suji.is_delete = 0
- left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
- WHERE
- ifo.is_delete = 0
- and ifo.second_distributor_id IS NOT NULL
- <if test="distributionCommissionDetailVo.signingTimeStart != null">
- and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
- </if>
- <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
- and suji.name = #{distributionCommissionDetailVo.distributor}
- </if>
- <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
- and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
- </if>
- UNION ALL
- SELECT
- ifo.order_no AS orderNo,
- ifo.total_premium AS premium,
- io.real_quote_user_id AS salesman,
- io.real_quote_user_id AS salesmanMobile,
- io.signing_time AS signingTime,
- suji.name AS distributor,
- su.mobile as distributorMobile,
- ifo.third_distribution_fee as commission,
- ifo.third_distribution_ratio AS distributionRatio,
- '3' AS distributionLevel
- FROM
- ins_fee_orders ifo
- LEFT JOIN ins_orders io ON ifo.order_no = io.id
- LEFT JOIN sys_user_jzg_info suji ON ifo.third_distributor_id = suji.id AND suji.is_delete = 0
- left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
- WHERE
- ifo.is_delete = 0
- and ifo.third_distributor_id IS NOT NULL
- <if test="distributionCommissionDetailVo.signingTimeStart != null">
- and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
- </if>
- <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
- and suji.name = #{distributionCommissionDetailVo.distributor}
- </if>
- <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
- and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
- </if>
- ORDER BY
- orderNo,
- distributionLevel
- </select>
- <select id="distributionTeam" resultType="com.jzg.commons.entity.vo.DistributionTeamVo">
- SELECT
- suji.id as id,
- suji.NAME AS name,
- suji1.name AS inviteePerson,
- su.mobile as mobile,
- sda.audit_approval_time as joinTime,
- 1 as level
- FROM
- esm_user_referrer eur1
- LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji1 ON suji1.id = eur1.referrer_id AND suji1.is_delete = 0
- LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
- left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
- WHERE
- eur1.is_delete = 0
- and eur1.referrer_id = #{topReferrerId}
- and sda.audit_status = '1'
- AND suji.id IS NOT NULL
- <if test="maxLevel >= 2">
- UNION ALL
- SELECT
- suji2.id as id,
- suji2.NAME AS name,
- suji.name AS inviteePerson,
- su2.mobile as mobile,
- sda.audit_approval_time as joinTime,
- 2 as level
- FROM
- esm_user_referrer eur1
- LEFT JOIN esm_user_referrer eur2 ON eur2.referrer_id = eur1.id
- LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji2 ON suji2.id = eur2.id AND suji2.is_delete = 0
- LEFT JOIN sys_user su2 ON su2.id = suji2.user_id AND su2.is_delete = 0
- left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
- WHERE
- eur1.referrer_id = #{topReferrerId}
- and sda.audit_status = '1'
- AND suji2.id IS NOT NULL
- </if>
- <if test="maxLevel >= 3">
- UNION ALL
- SELECT
- suji3.id as id,
- suji3.NAME AS name,
- suji2.name AS inviteePerson,
- su3.mobile as mobile,
- sda.audit_approval_time as joinTime,
- 3 as level
- FROM
- esm_user_referrer eur1
- LEFT JOIN esm_user_referrer eur2 ON eur2.referrer_id = eur1.id
- LEFT JOIN esm_user_referrer eur3 ON eur3.referrer_id = eur2.id
- LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji2 ON suji2.id = eur2.id AND suji2.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji3 ON suji3.id = eur3.id AND suji3.is_delete = 0
- LEFT JOIN sys_user su3 ON su3.id = suji3.user_id AND su3.is_delete = 0
- left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
- WHERE
- eur1.referrer_id = #{topReferrerId}
- and sda.audit_status = '1'
- AND suji3.id IS NOT NULL
- </if>
- ORDER BY eur1.id DESC
- </select>
- <select id="getDistributionOrder" resultType="com.jzg.commons.entity.vo.DistributionOrder">
- SELECT
- suji.id AS userId,
- suji.NAME AS NAME,
- su.mobile AS mobile,
- suji1.name AS inviteePerson,
- ifo.order_no AS orderNo,
- ifo.total_premium as premium,
- io.signing_time as signingTime,
- ioci.license_no AS licenseNo,
- ifa.audit_status as auditStatus,
- CASE
- WHEN ifo.first_distributor_id = #{distributionOrderVo.userId} THEN 1
- WHEN ifo.second_distributor_id = #{distributionOrderVo.userId} THEN 2
- WHEN ifo.third_distributor_id = #{distributionOrderVo.userId} THEN 3
- END AS level
- FROM sys_user_jzg_info suji
- LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
- left join sys_user_jzg_info suji1 ON suji1.id = suji.referrer_id AND suji1.is_delete = 0
- LEFT JOIN ins_fee_orders ifo ON ifo.first_distributor_id = #{distributionOrderVo.userId}
- OR ifo.second_distributor_id = #{distributionOrderVo.userId}
- OR ifo.third_distributor_id = #{distributionOrderVo.userId}
- and ifo.is_delete = 0
- LEFT JOIN ins_fee_audit ifa ON CAST(ifo.order_no AS CHAR) = ifa.order_no AND ifa.is_delete = 0
- LEFT JOIN ins_orders io ON io.id = ifo.order_no and io.is_delete = 0
- LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id and ioci.is_delete = 0
- <where>
- suji.is_delete = 0
- <if test="distributionOrderVo.level == null">
- AND (
- ifo.first_distributor_id = #{distributionOrderVo.userId}
- OR ifo.second_distributor_id = #{distributionOrderVo.userId}
- OR ifo.third_distributor_id = #{distributionOrderVo.userId}
- )
- </if>
- <if test="distributionOrderVo.level != null">
- AND (
- CASE
- WHEN #{distributionOrderVo.level} = 1 THEN ifo.first_distributor_id = #{distributionOrderVo.userId}
- WHEN #{distributionOrderVo.level} = 2 THEN ifo.second_distributor_id = #{distributionOrderVo.userId}
- WHEN #{distributionOrderVo.level} = 3 THEN ifo.third_distributor_id = #{distributionOrderVo.userId}
- END
- )
- </if>
- <if test="distributionOrderVo.auditStatus != null">
- AND (
- CASE
- WHEN #{distributionOrderVo.auditStatus} = 1 THEN ifa.audit_status = 1
- WHEN #{distributionOrderVo.auditStatus} = 0 THEN ifa.audit_status IN (1, 2)
- END
- )
- </if>
- <if test="distributionOrderVo.signingTimeStart != null">
- and io.signing_time between #{distributionOrderVo.signingTimeStart} and #{distributionOrderVo.signingTimeEnd}
- </if>
- <if test="distributionOrderVo.userId != null">
- AND suji.id = #{distributionOrderVo.userId}
- </if>
- </where>
- order by io.signing_time desc
- </select>
- <select id="getDistributionOrderByLevel" resultType="com.jzg.commons.entity.vo.DistributionOrder">
- SELECT
- suji.id AS userId,
- suji.NAME AS NAME,
- su.mobile AS mobile,
- suji1.name AS inviteePerson,
- ifo.order_no AS orderNo,
- ifo.total_premium as premium,
- io.signing_time as signingTime,
- ioci.license_no AS licenseNo,
- CASE
- WHEN #{distributionOrderVo.level} = '1' THEN ifo.first_distribution_fee
- WHEN #{distributionOrderVo.level} = '2' THEN ifo.second_distribution_fee
- WHEN #{distributionOrderVo.level} = '3' THEN ifo.third_distribution_fee
- END AS commission,
- #{distributionOrderVo.level} AS level
- FROM sys_user_jzg_info suji
- LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
- left join sys_user_jzg_info suji1 ON suji1.id = suji.referrer_id AND suji1.is_delete = 0
- LEFT JOIN ins_fee_orders ifo on 1=1
- <if test="distributionOrderVo.level != null">
- <choose>
- <when test="distributionOrderVo.level == '1'">AND ifo.first_distributor_id = suji.id</when>
- <when test="distributionOrderVo.level == '2'">AND ifo.second_distributor_id = suji.id</when>
- <when test="distributionOrderVo.level == '3'">AND ifo.third_distributor_id = suji.id</when>
- </choose>
- </if>
- left join ins_fee_audit ifa on ifa.order_no = ifo.order_no and ifa.audit_status = 1 AND ifa.is_delete = 0
- LEFT JOIN ins_orders io ON io.id = ifo.order_no AND io.is_delete = 0
- LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id AND ioci.is_delete = 0
- <where>
- suji.is_delete = 0
- <if test="distributionOrderVo.userId != null and distributionOrderVo.userId != ''">
- AND suji.id = #{distributionOrderVo.userId}
- </if>
- <if test="distributionOrderVo.signingTimeStart != null">
- and io.signing_time between #{distributionOrderVo.signingTimeStart} and #{distributionOrderVo.signingTimeEnd}
- </if>
- </where>
- ORDER BY suji.id DESC
- </select>
- <select id="inviteeDistributor" resultType="com.jzg.commons.entity.vo.DistributionTeamVo">
- SELECT
- suji.id as id,
- suji.NAME AS name,
- suji1.name AS inviteePerson,
- su.mobile as mobile,
- sda.audit_approval_time as joinTime,
- #{level} as level
- FROM
- esm_user_referrer eur1
- LEFT JOIN sys_user_jzg_info suji ON suji.id = eur1.id AND suji.is_delete = 0
- LEFT JOIN sys_user_jzg_info suji1 ON suji1.id = eur1.referrer_id AND suji1.is_delete = 0
- LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
- left join sys_distribution_audit sda ON sda.sys_user_jzg_info_id = suji.id AND sda.is_delete = 0
- <where>
- eur1.is_delete = 0
- and eur1.referrer_id = #{id}
- and sda.audit_status = '1'
- AND suji.id IS NOT NULL
- </where>
- ORDER BY suji.id DESC
- </select>
- </mapper>
|