xin
2025-07-16 6269dc7a50d5028fa616b339cfe790b6e0d5d16e
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
<?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.oying.modules.sh.mapper.UserAddressMapper">
    <resultMap id="BaseResultMap" type="com.oying.modules.sh.domain.UserAddress">
        <id column="address_id" property="addressId"/>
        <result column="user_id" property="userId"/>
        <result column="receiver_name" property="receiverName"/>
        <result column="receiver_phone" property="receiverPhone"/>
        <result column="province" property="province"/>
        <result column="city" property="city"/>
        <result column="district" property="district"/>
        <result column="street" property="street"/>
        <result column="short_address" property="shortAddress"/>
        <result column="detail" property="detail"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="is_default" property="isDefault"/>
        <result column="tag" property="tag"/>
        <result column="distance" property="distance"/>
        <result column="create_by" property="createBy"/>
        <result column="create_time" property="createTime"/>
        <result column="update_by" property="updateBy"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
 
    <sql id="Base_Column_List">
        address_id, user_id, receiver_name, receiver_phone, province, city, district, street, short_address, detail, longitude, latitude, is_default, tag, create_by, create_time, update_by, update_time
    </sql>
    <update id="isDefault">
        update sh_user_address
        set is_default = false
        where user_id = #{userId}
    </update>
 
    <select id="findAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        <if test="criteria.longitude != null and criteria.latitude != null and criteria.longitude != '' and criteria.latitude != ''">
            , ROUND(ST_Distance_Sphere(POINT(#{criteria.longitude}, #{criteria.latitude}), POINT(longitude,
            latitude)), 2) distance
        </if>
        from sh_user_address
        <where>
            <if test="criteria.userId != null and criteria.userId != ''">
                and user_id = #{criteria.userId}
            </if>
            <if test="criteria.tag != null and criteria.tag != ''">
                and tag = #{criteria.tag}
            </if>
            <if test="criteria.phone != null and criteria.phone != ''">
                and receiver_phone like concat('%',#{criteria.phone},'%')
            </if>
            <if test="criteria.radius != null and criteria.radius != ''">
                and ST_Distance_Sphere(POINT(#{criteria.longitude}, #{criteria.latitude}), POINT(longitude,
                latitude)) distance &lt;= #{criteria.radius}
            </if>
            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
            </if>
        </where>
        order by address_id desc
    </select>
    <select id="getById" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        , ROUND(ST_Distance_Sphere(POINT(#{longitude}, #{latitude}), POINT(longitude, latitude)), 2) distance
        from sh_user_address
        where user_id = #{userId} and address_id = #{addressId}
    </select>
</mapper>