| <?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.xzx.gc.user.mapper.AddressMapper"> | 
|     <resultMap id="AddressMap" type="com.xzx.gc.model.user.AddressVo"> | 
|         <result column="address_id" jdbcType="INTEGER" property="addressId"/> | 
|         <result column="mobile_phone" jdbcType="VARCHAR" property="mobilePhone"/> | 
|         <result column="user_id" jdbcType="VARCHAR" property="userId"/> | 
|         <result column="province_id" jdbcType="VARCHAR" property="provinceId"/> | 
|         <result column="city_id" jdbcType="VARCHAR" property="cityId"/> | 
|         <result column="township_id" jdbcType="VARCHAR" property="townshipId"/> | 
|         <result column="detail_address" jdbcType="VARCHAR" property="detailAddress"/> | 
|         <result column="address_area" jdbcType="VARCHAR" property="addressArea"/> | 
|         <result column="stair_type" jdbcType="VARCHAR" property="stairType"/> | 
|         <result column="rela_phone" jdbcType="VARCHAR" property="relaPhone"/> | 
|         <result column="rela_name" jdbcType="VARCHAR" property="relaName"/> | 
|         <result column="del_flag" jdbcType="VARCHAR" property="delFlag"/> | 
|         <result column="tag_name" jdbcType="VARCHAR" property="tagName"/> | 
|         <result column="unit_name" jdbcType="VARCHAR" property="unitName"/> | 
|         <result column="house_number" jdbcType="VARCHAR" property="houseNumber"/> | 
|         <result column="receive_address" jdbcType="VARCHAR" property="receiveAddress"/> | 
|         <result column="house_name" jdbcType="VARCHAR" property="houseName"/> | 
|     </resultMap> | 
|   | 
|     <!-- 地址查询 --> | 
|     <select id="addressQuery" parameterType="java.util.Map" resultMap="AddressMap"> | 
|         select a.*,b.level_1_name provinceName,b.level_2_name cityName, | 
|         b.level_3_name townshipName,c.config_value_name stairTypeName | 
|         from xzx_user_address_info a | 
|         left OUTER join xzx_sys_address_level_info b on a.province_id=b.level_1_id and a.city_id=b.level_2_id and a.township_id=b.level_3_id | 
|         left OUTER join xzx_sys_config_info c on a.stair_type=c.config_value and c.config_type_code='STAIR_TYPE' | 
|         where 1=1 and a.del_flag='0' | 
|         <if test="addressId!=null"> | 
|             and a.address_id=#{addressId} | 
|         </if> | 
|         <if test="userId!=null"> | 
|             and a.user_id=#{userId} | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 根据区域名称查询ID --> | 
|     <select id="queryAreaIdByName" parameterType="java.util.Map" resultMap="AddressMap"> | 
|         select level_1_id province_id,level_2_id city_id,level_3_id township_id,citycode,adcode,pcode | 
|         from xzx_sys_address_level_info | 
|         where level_1_name=#{provinceName} | 
|         and level_2_name=#{cityName} and level_3_name=#{townshipName} | 
|     </select> | 
|   | 
|     <select id="queryAreaIdById" parameterType="java.util.Map" resultMap="AddressMap"> | 
|         select level_1_id province_id,level_2_id city_id,level_3_id township_id,citycode,adcode | 
|         from xzx_sys_address_level_info | 
|         where level_1_id=#{provinceId} | 
|               and level_2_id=#{cityId}  and level_3_id=#{townshipId} | 
|     </select> | 
|   | 
|     <!-- 更新用户其它地址标志(当某一地址设为默认时,其它地址为非默认)   --> | 
|     <update id="updateAddressFlag" parameterType="java.util.Map"> | 
|         update xzx_user_address_info | 
|         set flag="0" | 
|         where mobile_phone=#{mobilePhone} and address_id!=#{addressId} | 
|     </update> | 
|     <!-- 逻辑删除地址   --> | 
|     <update id="deleteAddress"> | 
|         update | 
|           xzx_user_address_info | 
|         set | 
|           del_flag="1" | 
|         where | 
|           address_id=#{addressId} | 
|     </update> | 
|   | 
|     <!-- 自动设置最小ID为默认地址   --> | 
|     <update id="autoSetDefaultAddress"  > | 
|         update | 
|           xzx_user_address_info a | 
|         set | 
|           a.flag="1" | 
|         where | 
|           a.address_id = | 
|           ( | 
|             select c.minid from (select min(b.address_id) as minid | 
|             from xzx_user_address_info b where b.del_flag='0' and b.user_id=#{userId})c) | 
|     </update> | 
|   | 
|     <select id="queryCuserAddress" resultType="java.util.HashMap"> | 
|         SELECT address_area as addressArea,del_flag as delFlag,flag,create_time as createTime | 
|             ,township_id as townShipId, detail_address as detailAddress ,latitude ,longitude,rela_name as relaName, | 
|                address_id as addressId,rela_phone as relaPhone ,user_id as userId FROM xzx_user_address_info | 
|         WHERE mobile_phone=#{phone} and user_id=#{userId} and del_flag = 0 | 
|     </select> | 
| </mapper> |