FavoriteMapper.xml 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.chelvc.cloud.vehicle.server.dao.FavoriteMapper">
  4. <resultMap id="FAVORITE_RESULT_MAP" type="com.chelvc.cloud.vehicle.server.entity.Favorite">
  5. <id column="id" property="id" jdbcType="BIGINT"/>
  6. <result column="user_id" property="userId" jdbcType="BIGINT"/>
  7. <result column="type" property="type" jdbcType="VARCHAR"/>
  8. <result column="content_id" property="contentId" jdbcType="BIGINT"/>
  9. <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
  10. <association property="merchant" javaType="com.chelvc.cloud.vehicle.api.dto.MerchantDTO">
  11. <id column="merchant_id" property="id" jdbcType="BIGINT"/>
  12. <result column="name" property="name" jdbcType="VARCHAR"/>
  13. <result column="logo" property="logo" jdbcType="VARCHAR"/>
  14. <result column="score" property="score" jdbcType="DOUBLE"/>
  15. <result column="sale" property="sale" jdbcType="INTEGER"/>
  16. <result column="address" property="address" jdbcType="VARCHAR"/>
  17. <result column="distance" property="distance" jdbcType="DOUBLE"/>
  18. </association>
  19. </resultMap>
  20. <insert id="saveFavorite" useGeneratedKeys="true" keyProperty="id">
  21. insert into `favorite`(user_id, type, content_id, create_time)
  22. values(#{userId}, #{type}, #{contentId}, #{createTime})
  23. </insert>
  24. <select id="listFavoriteMerchants" resultMap="FAVORITE_RESULT_MAP">
  25. select fe.id,fe.content_id,mt.id as merchant_id, mt.name, mt.logo, mt.score, mt.sale, mt.address,
  26. round(st_distance_sphere(
  27. point(mt.longitude, mt.latitude), point(#{param.longitude}, #{param.latitude})
  28. ),1) distance from favorite fe
  29. inner join merchant mt on fe.content_id = mt.id and mt.status = 'ONLINE'
  30. and mt.region = #{param.region}
  31. where fe.user_id = #{userId} and fe.type = 'MERCHANT'
  32. <if test="param.offset != null">
  33. and fe.id > #{param.offset}
  34. </if>
  35. order by fe.create_time desc
  36. limit #{param.size}
  37. </select>
  38. </mapper>