<?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.tcm.training.admin.member.mapper.ClinicQueryMapper">
|
|
<sql id="ClinicWhere">
|
WHERE c.deleted = 0
|
<if test="regionCode != null and regionCode.trim() != ''">
|
AND (
|
c.province_code = #{regionCode}
|
OR c.city_code = #{regionCode}
|
OR c.district_code = #{regionCode}
|
)
|
</if>
|
<if test="name != null and name.trim() != ''">
|
AND c.name LIKE CONCAT('%', #{name}, '%')
|
</if>
|
<if test="phone != null and phone.trim() != ''">
|
AND c.contact_phone LIKE CONCAT('%', #{phone}, '%')
|
</if>
|
<if test="agentName != null and agentName.trim() != ''">
|
AND pa.agent_name LIKE CONCAT('%', #{agentName}, '%')
|
</if>
|
<if test="createdFrom != null">
|
AND c.created_at >= #{createdFrom}
|
</if>
|
<if test="createdTo != null">
|
AND c.created_at <= #{createdTo}
|
</if>
|
<if test="status != null">
|
AND c.status = #{status}
|
</if>
|
</sql>
|
|
<select id="selectClinicPage" resultType="com.tcm.training.admin.member.row.ClinicListRow">
|
SELECT
|
c.id,
|
c.name,
|
c.contact_phone AS phone,
|
CASE
|
WHEN c.province_name IS NOT NULL AND c.province_name != '' THEN
|
CONCAT(
|
c.province_name,
|
IFNULL(c.city_name, ''),
|
IFNULL(c.district_name, '')
|
)
|
ELSE NULL
|
END AS regionName,
|
c.status,
|
pa.agent_name AS agentName,
|
COUNT(u.id) AS userCount,
|
c.created_at AS createdAt,
|
c.business_license_url AS businessLicenseUrl
|
FROM tcm_clinic c
|
LEFT JOIN tcm_provincial_agent pa ON pa.id = c.agent_id AND pa.deleted = 0
|
LEFT JOIN tcm_app_user u ON u.clinic_id = c.id AND u.deleted = 0
|
<include refid="ClinicWhere"/>
|
GROUP BY
|
c.id,
|
c.name,
|
c.contact_phone,
|
c.province_name,
|
c.city_name,
|
c.district_name,
|
c.status,
|
pa.agent_name,
|
c.created_at,
|
c.business_license_url
|
ORDER BY c.id DESC
|
</select>
|
|
<select id="selectClinicList" resultType="com.tcm.training.admin.member.row.ClinicListRow">
|
SELECT
|
c.id,
|
c.name,
|
c.contact_phone AS phone,
|
CASE
|
WHEN c.province_name IS NOT NULL AND c.province_name != '' THEN
|
CONCAT(
|
c.province_name,
|
IFNULL(c.city_name, ''),
|
IFNULL(c.district_name, '')
|
)
|
ELSE NULL
|
END AS regionName,
|
c.status,
|
pa.agent_name AS agentName,
|
COUNT(u.id) AS userCount,
|
c.created_at AS createdAt,
|
c.business_license_url AS businessLicenseUrl
|
FROM tcm_clinic c
|
LEFT JOIN tcm_provincial_agent pa ON pa.id = c.agent_id AND pa.deleted = 0
|
LEFT JOIN tcm_app_user u ON u.clinic_id = c.id AND u.deleted = 0
|
<include refid="ClinicWhere"/>
|
GROUP BY
|
c.id,
|
c.name,
|
c.contact_phone,
|
c.province_name,
|
c.city_name,
|
c.district_name,
|
c.status,
|
pa.agent_name,
|
c.created_at,
|
c.business_license_url
|
ORDER BY c.id DESC
|
</select>
|
|
<select id="selectRegionOptions" resultType="com.tcm.training.admin.member.row.ClinicRegionOptionRow">
|
SELECT DISTINCT
|
CASE
|
WHEN c.district_code IS NOT NULL AND c.district_code != '' THEN c.district_code
|
WHEN c.city_code IS NOT NULL AND c.city_code != '' THEN c.city_code
|
ELSE c.province_code
|
END AS regionCode,
|
CASE
|
WHEN c.province_name IS NOT NULL AND c.province_name != '' THEN
|
CONCAT(
|
c.province_name,
|
IFNULL(c.city_name, ''),
|
IFNULL(c.district_name, '')
|
)
|
ELSE NULL
|
END AS regionName
|
FROM tcm_clinic c
|
WHERE c.deleted = 0
|
AND c.province_name IS NOT NULL
|
AND c.province_name != ''
|
ORDER BY regionCode ASC
|
</select>
|
|
<select id="selectClinicDetail" resultType="com.tcm.training.admin.member.row.ClinicDetailRow">
|
SELECT c.id, c.name, c.contact_phone AS contactPhone, c.address, c.province_code AS provinceCode, c.city_code AS cityCode, c.district_code AS districtCode,
|
c.business_license_url AS businessLicenseUrl,
|
c.bank_name AS bankName, c.account_holder AS accountHolder,
|
c.account_number AS accountNumber, c.branch_name AS branchName,
|
c.status, c.agent_id AS agentId,
|
u.phone AS loginAccount, u.avatar AS avatar,
|
COUNT(u.id) AS userCount
|
FROM tcm_clinic c
|
LEFT JOIN tcm_app_user u ON u.clinic_id = c.id AND u.deleted = 0 and u.type = 1
|
WHERE c.deleted = 0 AND c.id = #{id}
|
GROUP BY c.id, c.name, c.contact_phone, c.address, c.province_code, c.city_code, c.district_code, c.business_license_url,c.status,
|
c.bank_name, c.account_holder, c.account_number, c.branch_name, u.avatar, u.phone
|
</select>
|
|
<select id="selectClinicUserPage" resultType="com.tcm.training.admin.member.row.ClinicBoundUserRow">
|
SELECT
|
u.id,
|
u.nickname,
|
u.phone,
|
u.avatar,
|
IFNULL(p.livePoints, 0) AS livePoints,
|
CASE
|
WHEN u.member_expire_at IS NOT NULL AND u.member_expire_at > NOW() THEN 1
|
ELSE 0
|
END AS isMember,
|
u.status,
|
u.created_at AS createdAt
|
FROM tcm_app_user u
|
LEFT JOIN (
|
SELECT
|
app_user_id,
|
SUM(points_delta) AS livePoints
|
FROM tcm_points_ledger
|
WHERE deleted = 0
|
AND business_type = 'LIVE_WATCH'
|
AND income_expense_type = 'INCOME'
|
GROUP BY app_user_id
|
) p ON p.app_user_id = u.id
|
WHERE u.deleted = 0
|
AND u.clinic_id = #{clinicId}
|
<if test="nickname != null and nickname.trim() != ''">
|
AND u.nickname LIKE CONCAT('%', #{nickname}, '%')
|
</if>
|
<if test="phone != null and phone.trim() != ''">
|
AND u.phone LIKE CONCAT('%', #{phone}, '%')
|
</if>
|
<if test="status != null">
|
AND u.status = #{status}
|
</if>
|
<if test="isMember != null and isMember == 1">
|
AND u.member_expire_at IS NOT NULL AND u.member_expire_at > NOW()
|
</if>
|
<if test="isMember != null and isMember == 0">
|
AND (u.member_expire_at IS NULL OR u.member_expire_at <= NOW())
|
</if>
|
<if test="registeredFrom != null">
|
AND u.created_at >= #{registeredFrom}
|
</if>
|
<if test="registeredTo != null">
|
AND u.created_at <= #{registeredTo}
|
</if>
|
ORDER BY u.id DESC
|
</select>
|
|
</mapper>
|