luodangjia
2024-12-10 ee7ce5d1cbf80bee0a15c1e5bc5eaa30858d812b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?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.hollywood.applet.mapper.TCompanyMapper">
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.hollywood.common.model.TCompany">
        <id column="id" property="id" />
        <result column="companyName" property="companyName" />
        <result column="contactsName" property="contactsName" />
        <result column="contactsPhone" property="contactsPhone" />
        <result column="provinceName" property="provinceName" />
        <result column="provinceCode" property="provinceCode" />
        <result column="cityName" property="cityName" />
        <result column="cityCode" property="cityCode" />
        <result column="address" property="address" />
        <result column="lon" property="lon" />
        <result column="lat" property="lat" />
        <result column="companyIntroduction" property="companyIntroduction" />
        <result column="companyCover" property="companyCover" />
        <result column="companyPicture" property="companyPicture" />
        <result column="companyDetail" property="companyDetail" />
        <result column="sortBy" property="sortBy" />
        <result column="status" property="status" />
        <result column="createTime" property="createTime" />
        <result column="updateTime" property="updateTime" />
        <result column="createBy" property="createBy" />
        <result column="updateBy" property="updateBy" />
        <result column="isDelete" property="isDelete" />
    </resultMap>
 
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, companyName, contactsName, contactsPhone, provinceName, provinceCode, cityName, cityCode, address, lon, lat, companyIntroduction, companyCover, companyPicture, companyDetail, sortBy, status, createTime, updateTime, createBy, updateBy, isDelete
    </sql>
    <select id="pageList" resultType="com.hollywood.applet.dto.CompanyDistanceDto">
        SELECT
        id,
        companyName,
        companyIntroduction,
        companyCover,
        CASE
        WHEN cityName IS NOT NULL AND LENGTH(TRIM(cityName)) > 0 THEN CONCAT(provinceName, ' | ', cityName)
        ELSE provinceName
        END AS city,
        ROUND(
        6378.138 * 2 * ASIN(
        SQRT(
        POWER(
        SIN(
        (
        #{query.lat} * PI() / 180 - lat * PI() / 180
        ) / 2
        ),
        2
        ) + COS(#{query.lat} * PI() / 180) * COS(lat * PI() / 180) * POWER(
        SIN(
        (
        #{query.lon} * PI() / 180 - lon * PI() / 180
        ) / 2
        ),
        2
        )
        )
        ),
        2
        ) AS distance
        FROM
        t_company
        <where>
            status = 1
            <if test="query.companyName != null and query.companyName != ''">
                AND companyName LIKE concat('%',#{query.companyName},'%')
            </if>
        <if test="query.provinceCode != null and query.provinceCode != ''">
                AND provinceCode = #{query.provinceCode}
            </if>
            <if test="query.cityCode != null and query.cityCode != ''">
                AND cityCode =  #{query.cityCode}
            </if>
            AND isDelete = ${@com.hollywood.common.enums.DisabledEnum@NO.getCode()}
        </where>
        ORDER BY
        <if test="recommand != null and recommand != ''">
            CASE
            WHEN cityCode = #{recommand} THEN 0
            ELSE 1
            END ASC,
        </if>
        sortBy DESC
    </select>
 
</mapper>