You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

538 lines
22 KiB

  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.iformall.mapper.WxMerchantMapper">
  4. <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxMerchant">
  5. <id column="id" jdbcType="BIGINT" property="id"/>
  6. <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
  7. <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId"/>
  8. <result column="img_url" jdbcType="VARCHAR" property="imgUrl"/>
  9. <result column="name" jdbcType="VARCHAR" property="name"/>
  10. <result column="encode" jdbcType="VARCHAR" property="encode"/>
  11. <result column="link_phone" jdbcType="VARCHAR" property="linkPhone"/>
  12. <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
  13. <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
  14. <result column="car_vendor_type" jdbcType="INTEGER" property="carVendorType"/>
  15. <result column="car_params" jdbcType="VARCHAR" property="carParams"/>
  16. <result column="status" jdbcType="INTEGER" property="status"/>
  17. <result column="link_person" jdbcType="VARCHAR" property="linkPerson"/>
  18. <result column="business_id" jdbcType="INTEGER" property="businessId"/>
  19. <result column="business_types" jdbcType="VARCHAR" property="businessTypes"/>
  20. <result column="sub_business_id" jdbcType="INTEGER" property="subBusinessId"/>
  21. <result column="shop_type" jdbcType="INTEGER" property="shopType"/>
  22. <result column="brand" jdbcType="VARCHAR" property="brand"/>
  23. <result column="is_public" jdbcType="SMALLINT" property="isPublic"/>
  24. <result column="is_private" jdbcType="SMALLINT" property="isPrivate"/>
  25. <result column="email" jdbcType="VARCHAR" property="email"/>
  26. <result column="title" jdbcType="VARCHAR" property="title"/>
  27. <result column="cover_picture" jdbcType="VARCHAR" property="coverPicture"/>
  28. <result column="is_admin" jdbcType="INTEGER" property="isAdmin"/>
  29. <result column="bill_setting" jdbcType="INTEGER" property="billSetting"/>
  30. <result column="qr_code" jdbcType="VARCHAR" property="qrCode"/>
  31. <result column="tt_qr_code" jdbcType="VARCHAR" property="ttQrCode"/>
  32. <result column="introduction" jdbcType="VARCHAR" property="introduction"/>
  33. <result column="action_desc" jdbcType="VARCHAR" property="actionDesc"/>
  34. <result column="mark" jdbcType="INTEGER" property="mark"/>
  35. <result column="mark_time" jdbcType="TIMESTAMP" property="markTime"/>
  36. <result column="is_del" jdbcType="INTEGER" property="isDel"/>
  37. <result column="talk_user_main" jdbcType="VARCHAR" property="talkUserMain"/>
  38. <result column="talk_user_aux" jdbcType="VARCHAR" property="talkUserAux"/>
  39. <result column="link_line_phone" property="linkLinePhone"/>
  40. <result column="search_card_by_phone" jdbcType="INTEGER" property="searchCardByPhone"/>
  41. <result column="rental_start_date" property="rentalStartDate"/>
  42. <result column="rental_end_date" property="rentalEndDate"/>
  43. <result column="credit_locked" property="creditLocked"/>
  44. <result column="entry_amount" jdbcType="INTEGER" property="entryAmount"/>
  45. <result column="cash_out_number" jdbcType="INTEGER" property="cashOutNumber"/>
  46. <result column="cash_out_count" jdbcType="INTEGER" property="cashOutCount"/>
  47. <result column="cash_out_last_time" jdbcType="TIMESTAMP" property="cashOutLastTime"/>
  48. <result column="create_from" jdbcType="INTEGER" property="createFrom"/>
  49. <result column="create_from_id" jdbcType="VARCHAR" property="createFromId"/>
  50. <result column="create_shop_number" jdbcType="VARCHAR" property="createShopNumber"/>
  51. <result column="create_shop_type" jdbcType="INTEGER" property="createShopType"/>
  52. </resultMap>
  53. <sql id="allColumns">
  54. m.`id`,m.`tenant_id`,m.`parent_tenant_id`,m.`img_url`,m.`name`,m.`encode`,m.`link_phone`,m.`create_date`,m.`update_date`,m.`car_vendor_type`,m.`car_params`,m.`status`,m.`link_person`,
  55. m.`business_id`,m.`business_types`,m.`sub_business_id`,m.`shop_type`,m.`brand`,m.`is_public`,m.`is_private`,m.email,m.`title`,m.`cover_picture`,m.`is_admin`,m.`bill_setting`,m.`qr_code`,m.`tt_qr_code`,
  56. m.`introduction`,m.`action_desc`,m.`mark`,m.mark_time,m.`is_del`,m.`talk_user_main`,m.`talk_user_aux`,m.link_line_phone,m.search_card_by_phone,m.credit_locked,m.credit_locked,m.entry_amount,m.cash_out_count,
  57. m.cash_out_last_time,m.create_from,m.create_from_id,m.create_shop_number,m.create_shop_type
  58. </sql>
  59. <sql id="dynamicWhereConditions">
  60. where m.is_del = 0
  61. <if test=" null != id ">
  62. and m.`id` = #{id}
  63. </if>
  64. <if test=" null != tenantId and '' != tenantId">
  65. and m.`tenant_id` = #{tenantId}
  66. </if>
  67. <if test=" null != parentTenantId and '' != parentTenantId">
  68. and m.`parent_tenant_id` = #{parentTenantId}
  69. </if>
  70. <if test=" null != imgUrl ">
  71. and m.`img_url` like concat('%', #{imgUrl},'%')
  72. </if>
  73. <if test=" null != encode and ''!=encode ">
  74. and m.`encode` like concat('%', #{encode},'%')
  75. </if>
  76. <if test=" null != name and ''!=name ">
  77. and m.`name` like concat('%', #{name},'%')
  78. </if>
  79. <if test=" null != linkPhone and ''!=linkPhone ">
  80. and m.`link_phone` like concat('%', #{linkPhone},'%')
  81. </if>
  82. <if test=" null != linkPerson and ''!=linkPerson ">
  83. and m.`link_person` like concat('%', #{linkPerson},'%')
  84. </if>
  85. <if test=" null != createDate ">
  86. and m.`create_date` = #{createDate}
  87. </if>
  88. <if test=" null != updateDate ">
  89. and m.`update_date` = #{updateDate}
  90. </if>
  91. <if test="starttime != null">
  92. and m.create_date &gt;= #{starttime}
  93. </if>
  94. <if test="endtime != null">
  95. and m.create_date &lt;= #{endtime}
  96. </if>
  97. <if test=" null != carVendorType ">
  98. and m.`car_vendor_type` = #{carVendorType}
  99. </if>
  100. <if test=" null != hasCarVendor ">
  101. and m.`car_vendor_type` is not null and m.`car_vendor_type` > 0
  102. </if>
  103. <if test=" null != noCarVendor ">
  104. and (m.`car_vendor_type` = 0 or m.`car_vendor_type` is null)
  105. </if>
  106. <if test=" null != businessId ">
  107. and m.`business_id` = #{businessId}
  108. </if>
  109. <if test=" null != businessForRule and '' != businessForRule ">
  110. and m.business_id in (${businessForRule}) and m.is_del=0
  111. </if>
  112. <if test=" null != businessTypes ">
  113. and JSON_CONTAINS(m.business_types,JSON_OBJECT('id', #{businessTypes}))
  114. </if>
  115. <if test=" null != subBusinessId ">
  116. and m.`sub_business_id` = #{subBusinessId}
  117. </if>
  118. <if test=" null != carParams ">
  119. and m.`car_params` like concat('%', #{carParams},'%')
  120. </if>
  121. <if test=" null != status ">
  122. and m.`status` = #{status}
  123. </if>
  124. <if test=" null != isPublic ">
  125. and m.`is_public` = #{isPublic}
  126. </if>
  127. <if test=" null != isPrivate ">
  128. and m.`is_private` = #{isPrivate}
  129. </if>
  130. <if test=" null != email ">
  131. and m.`email` = #{email}
  132. </if>
  133. <if test=" null != isAdmin ">
  134. and m.`is_admin` = #{isAdmin}
  135. </if>
  136. <if test=" null != mark ">
  137. <if test="mark == 0" >
  138. and (m.`mark` is null or m.`mark` &lt;&gt; 1)
  139. </if>
  140. <if test="mark == 1" >
  141. and m.`mark` = 1
  142. </if>
  143. </if>
  144. <if test=" null != isDel ">
  145. and m.`is_del` = #{isDel}
  146. </if>
  147. <if test=" null != brand ">
  148. and m.`brand` = #{brand}
  149. </if>
  150. <if test=" null != creditLocked ">
  151. and m.`credit_locked` = #{creditLocked}
  152. </if>
  153. <if test=" null != createFrom ">
  154. and m.`create_from` = #{createFrom}
  155. </if>
  156. <if test=" null != createFromId and '' != createFromId">
  157. and m.`create_from_id` = #{createFromId}
  158. </if>
  159. <if test=" null != createShopNumber and '' != createShopNumber">
  160. and m.`create_shop_number` = #{createShopNumber}
  161. </if>
  162. <if test=" null != createShopType ">
  163. and m.`create_shop_type` = #{createShopType}
  164. </if>
  165. <if test=" null != privateRentShopTypeList and privateRentShopTypeList.size > 0">
  166. and m.`create_shop_type` in
  167. <foreach collection="privateRentShopTypeList" index="index" item="prstItem" open="(" separator="," close=")">
  168. #{prstItem}
  169. </foreach>
  170. </if>
  171. <if test=" null != createShopNumberList and createShopNumberList.size > 0">
  172. and m.`create_shop_number` in
  173. <foreach collection="createShopNumberList" index="index" item="csItem" open="(" separator="," close=")">
  174. #{csItem}
  175. </foreach>
  176. </if>
  177. <if test=" null != adminTypes and adminTypes.size > 0">
  178. and m.`is_admin` in
  179. <foreach collection="adminTypes" index="index" item="typeItem" open="(" separator="," close=")">
  180. #{typeItem}
  181. </foreach>
  182. </if>
  183. <if test=" null != ids and ids.size > 0">
  184. and m.id in
  185. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  186. #{idItem}
  187. </foreach>
  188. </if>
  189. <if test=" null != notInids and notInids.size > 0">
  190. and m.id NOT IN
  191. <foreach collection="notInids" index="index" item="notInIdItem" open="(" separator="," close=")">
  192. #{notInIdItem}
  193. </foreach>
  194. </if>
  195. <if test="merchantIds != null and merchantIds.size > 0">
  196. and m.id NOT IN
  197. <foreach collection="merchantIds" index="index" item="idItem" open="(" separator="," close=")">
  198. #{idItem}
  199. </foreach>
  200. </if>
  201. <if test=" null != sortColumns">order by ${sortColumns}</if>
  202. </sql>
  203. <select id="findIdNameList" parameterType="com.iformall.domain.po.WxMerchant" resultMap="BaseResultMap">
  204. select id,name
  205. from wx_merchant m
  206. <include refid="dynamicWhereConditions"/>
  207. </select>
  208. <select id="findList" parameterType="com.iformall.domain.po.WxMerchant" resultMap="BaseResultMap">
  209. select
  210. <include refid="allColumns"/>
  211. from wx_merchant m
  212. <include refid="dynamicWhereConditions"/>
  213. </select>
  214. <select id="findByTenantIds" parameterType="java.util.Map" resultMap="BaseResultMap">
  215. select
  216. <include refid="allColumns"/>
  217. from wx_merchant m
  218. where m.is_del = 0
  219. and m.`status` = 1
  220. <if test=" null != tenantIds ">
  221. and m.tenant_id in
  222. <foreach collection="tenantIds" index="index" item="tenantId" open="(" separator="," close=")">
  223. #{tenantId}
  224. </foreach>
  225. </if>
  226. </select>
  227. <select id="findIdList" parameterType="com.iformall.domain.po.WxMerchant" resultType="Long">
  228. select id
  229. from wx_merchant m
  230. <include refid="dynamicWhereConditions"/>
  231. </select>
  232. <select id="getMerchantByEncode" parameterType="String" resultMap="BaseResultMap">
  233. select
  234. <include refid="allColumns"/>
  235. from wx_merchant m where m.encode = #{encode}
  236. </select>
  237. <select id="getMerchantByCode" parameterType="java.util.Map" resultMap="BaseResultMap">
  238. select <include refid="allColumns"/>
  239. FROM wx_merchant m where md5(m.`id`) = #{merchantCode}
  240. <if test=" null != tenantId and '' != tenantId">
  241. and m.`tenant_id` = #{tenantId}
  242. </if>
  243. <if test=" null != parentTenantId and '' != parentTenantId">
  244. and m.`parent_tenant_id` = #{parentTenantId}
  245. </if>
  246. <if test=" null != status ">
  247. and m.`status` = #{status}
  248. </if>
  249. </select>
  250. <select id="findListCVo" parameterType="com.iformall.domain.dto.WxMerchantDto" resultMap="BaseResultMap">
  251. select
  252. <include refid="allColumns"/>
  253. FROM wx_merchant m where m.is_del=0
  254. <if test=" null != tenantId and '' != tenantId">
  255. and m.`tenant_id` = #{tenantId}
  256. </if>
  257. <if test=" null != parentTenantId and '' != parentTenantId">
  258. and m.`parent_tenant_id` = #{parentTenantId}
  259. </if>
  260. <if test=" null != merchantName and ''!=merchantName ">
  261. and m.`name` like concat('%', #{merchantName},'%')
  262. </if>
  263. <if test=" null != merchantLinkPhone and ''!=merchantLinkPhone ">
  264. and m.`link_phone` like concat('%', #{merchantLinkPhone},'%')
  265. </if>
  266. <if test=" null != businessId ">
  267. and m.`business_id` = #{businessId}
  268. </if>
  269. <if test=" null != subBusinessId ">
  270. and m.`sub_business_id` = #{subBusinessId}
  271. </if>
  272. <if test=" null != merchantStatus ">
  273. and m.`status` = #{merchantStatus}
  274. </if>
  275. <if test=" null != isPublic">
  276. and m.`is_public` = #{isPublic}
  277. </if>
  278. <if test=" null != isPrivate">
  279. and m.`is_private` = #{isPrivate}
  280. </if>
  281. <if test=" null != isAdmin ">
  282. and m.`is_admin` = #{isAdmin}
  283. </if>
  284. <if test=" null != id">
  285. and m.`id` = #{id}
  286. </if>
  287. <if test=" null != adminTypes and adminTypes.size > 0">
  288. and m.`is_admin` in
  289. <foreach collection="adminTypes" index="index" item="typeItem" open="(" separator="," close=")">
  290. #{typeItem}
  291. </foreach>
  292. </if>
  293. <if test=" null != ids ">
  294. and m.id in
  295. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  296. #{idItem}
  297. </foreach>
  298. </if>
  299. order by m.top_time desc
  300. </select>
  301. <select id="findQrcodeEmptyList" resultMap="BaseResultMap">
  302. select <include refid="allColumns"/> from wx_merchant m where (m.qr_code is null or m.tt_qr_code is null);
  303. </select>
  304. <select id="findBusByFloorId" resultType="hashmap" parameterType="hashmap">
  305. select count(distinct m.id) count,m.business_id bid
  306. from wx_merchant m
  307. where m.status = 1 and m.is_del = 0
  308. <if test=" null != tenantId and '' != tenantId">
  309. and m.`tenant_id` = #{tenantId}
  310. </if>
  311. <if test=" null != parentTenantId and '' != parentTenantId">
  312. and m.`parent_tenant_id` = #{parentTenantId}
  313. </if>
  314. <if test=" null != ids ">
  315. and m.id in
  316. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  317. #{idItem}
  318. </foreach>
  319. </if>
  320. group by m.business_id
  321. </select>
  322. <select id="hasMerchant" parameterType="com.iformall.domain.po.WxMerchant" resultType="int">
  323. select count(1) from wx_merchant where `name`=#{name}
  324. <if test=" null != status ">
  325. and `status` = #{status}
  326. </if>
  327. <if test=" null != id">
  328. and `id` != #{id}
  329. </if>
  330. </select>
  331. <select id="hasMerchantEncode" parameterType="com.iformall.domain.po.WxMerchant" resultType="int">
  332. select count(1) from wx_merchant where `encode`=#{encode}
  333. <if test=" null != status ">
  334. and `status` = #{status}
  335. </if>
  336. <if test=" null != id">
  337. and `id` != #{id}
  338. </if>
  339. </select>
  340. <select id="hasMerchantBrand" parameterType="com.iformall.domain.po.WxMerchant" resultType="int">
  341. select count(1) from wx_merchant where `brand`=#{brand}
  342. <if test=" null != status ">
  343. and `status` = #{status}
  344. </if>
  345. <if test=" null != id">
  346. and `id` != #{id}
  347. </if>
  348. </select>
  349. <select id="hasMerchantIsAdmin" parameterType="com.iformall.domain.po.WxMerchant" resultType="int">
  350. select count(1) from wx_merchant where `is_admin`=#{isAdmin}
  351. <if test=" null != status ">
  352. and `status` = #{status}
  353. </if>
  354. <if test=" null != id">
  355. and `id` != #{id}
  356. </if>
  357. </select>
  358. <update id="updateCreditLocked" parameterType="com.iformall.domain.po.WxMerchant">
  359. update wx_merchant set credit_locked = #{creditLocked} where tenant_id = #{tenantId}
  360. </update>
  361. <select id="userTradeMerchantList" parameterType="com.iformall.domain.po.WxMerchant" resultMap="BaseResultMap">
  362. SELECT m.id, m.`img_url` , m.`name` ,m.`encode` , m.`link_person`
  363. FROM wx_merchant m
  364. where m.status=1
  365. <if test=" null != name and ''!=name ">
  366. and `name` like concat('%', #{name},'%')
  367. </if>
  368. <if test=" null != linkPhone and ''!=linkPhone ">
  369. and `link_phone` like concat('%', #{linkPhone},'%')
  370. </if>
  371. <if test=" null != linkPerson and ''!=linkPerson ">
  372. and `link_person` like concat('%', #{linkPerson},'%')
  373. </if>
  374. <if test=" null != sortColumns">order by ${sortColumns}</if>
  375. </select>
  376. <select id="findByTrade" parameterType="java.util.Map" resultMap="BaseResultMap">
  377. select <include refid="allColumns"/> from wx_merchant m where
  378. m.id in
  379. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  380. #{idItem}
  381. </foreach>
  382. limit 1
  383. </select>
  384. <select id="getMerchantList" parameterType="com.iformall.domain.po.WxMerchant" resultMap="BaseResultMap">
  385. select <include refid="allColumns"/>
  386. from wx_merchant m
  387. where m.is_del=0 and m.status=1
  388. <if test=" null != tenantId and '' != tenantId">
  389. and m.`tenant_id` = #{tenantId}
  390. </if>
  391. <if test=" null != parentTenantId and '' != parentTenantId">
  392. and m.`parent_tenant_id` = #{parentTenantId}
  393. </if>
  394. <if test=" null != isPrivate">
  395. and m.`is_private` = #{isPrivate}
  396. </if>
  397. order by m.create_date desc
  398. </select>
  399. <update id="increaseCash" parameterType="com.iformall.domain.po.WxMerchant">
  400. update wx_merchant set cash_out_number = cash_out_number+#{cashOutNumber} where id = #{id}
  401. </update>
  402. <update id="reduceCash" parameterType="com.iformall.domain.po.WxMerchant">
  403. update wx_merchant set cash_out_number = cash_out_number-#{cashOutNumber}, cash_out_count = cash_out_count+1,cash_out_last_time = now() where id = #{id}
  404. </update>
  405. <update id="increaseCashCount" parameterType="com.iformall.domain.po.WxMerchant">
  406. update wx_merchant set cash_out_count = cash_out_count+1 where id = #{id}
  407. </update>
  408. <update id="reSetCashCount" parameterType="com.iformall.domain.po.WxMerchant">
  409. update wx_merchant set cash_out_count = 0 where id = #{id}
  410. </update>
  411. <update id="recordedAmount" parameterType="com.iformall.domain.po.WxMerchant">
  412. update wx_merchant set
  413. entry_amount = ifnull(entry_amount,0)+#{entryAmount}
  414. /*,cash_out_number = ifnull(cash_out_number,0)+#{cashOutNumber}*/
  415. where id = #{id}
  416. </update>
  417. <select id="findShopMerchant" parameterType="Long" resultType="hashmap">
  418. select
  419. m.`id`,m.`tenant_id`,m.`parent_tenant_id`,m.`img_url`,m.`name`,m.`encode`,m.`link_phone`,m.`create_date`,m.`update_date`,m.`car_vendor_type`,m.`car_params`,m.`status`,m.`link_person`,
  420. m.`business_id`,m.`business_types`,m.`sub_business_id`,m.`shop_type`,m.`brand`,m.`is_public`,m.`is_private`,m.email,m.`title`,m.`cover_picture`,m.`is_admin`,m.`bill_setting`,m.`qr_code`,m.`tt_qr_code`,
  421. m.`introduction`,m.`action_desc`,m.`mark`,m.mark_time,m.`is_del`,m.`talk_user_main`,m.`talk_user_aux`,m.link_line_phone,m.credit_locked,m.credit_locked
  422. from wx_merchant m where m.id = #{id}
  423. </select>
  424. <select id="detailShopMerchantById" parameterType="hashmap" resultType="hashmap">
  425. select
  426. m.`id`,m.`tenant_id` tenantId,m.`parent_tenant_id` parentTenantId,m.`img_url`,m.`name`,m.`encode`,m.`link_phone`,m.`create_date`,m.`update_date`,
  427. m.`car_vendor_type`,m.`car_params`,m.`status`,m.`link_person`,
  428. m.`business_id`,m.`business_types`,m.`sub_business_id`,m.`shop_type`,m.`brand`,m.`is_public`,m.`is_private`,m.email,m.`title`,m.`cover_picture`,m.`is_admin`,m.`bill_setting`,m.`qr_code`,m.`tt_qr_code`,
  429. m.`introduction`,m.`action_desc`,m.`mark`,m.mark_time,m.`is_del`,m.`talk_user_main`,m.`talk_user_aux`,m.link_line_phone,m.credit_locked,m.credit_locked
  430. from wx_merchant m where m.id = #{id} and m.is_del = 0
  431. <if test=" null != tenantInfo.tenantId and '' != tenantInfo.tenantId">
  432. and m.`tenant_id` = #{tenantInfo.tenantId}
  433. </if>
  434. <if test=" null != tenantInfo.parentTenantId and '' != tenantInfo.parentTenantId">
  435. and m.`parent_tenant_id` = #{tenantInfo.parentTenantId}
  436. </if>
  437. </select>
  438. <update id="deleteByUpdate" parameterType="Long">
  439. update wx_merchant set is_del = 1
  440. where id = #{id}
  441. </update>
  442. <select id="getMerchantListByIds" resultType="com.iformall.domain.po.WxMerchant">
  443. select <include refid="allColumns"/>
  444. from wx_merchant m
  445. where m.is_del=0
  446. <!-- and m.is_admin=0 -->
  447. <if test="relationIds != null and relationIds.size > 0">
  448. and m.id in
  449. <foreach collection="relationIds" index="index" item="idItem" open="(" separator="," close=")">
  450. #{idItem}
  451. </foreach>
  452. </if>
  453. </select>
  454. <select id="countMerchant" resultType="java.lang.Integer">
  455. SELECT
  456. COUNT(1)
  457. FROM
  458. wx_merchant
  459. WHERE
  460. is_del = 0
  461. AND status = 1
  462. AND ( `car_vendor_type` = 0 OR `car_vendor_type` IS NULL )
  463. AND `is_private` = 0
  464. AND `is_admin` IN (0, 1)
  465. AND tenant_id IN
  466. <foreach collection="tenantIds" index="index" item="tenantId" open="(" separator="," close=")">
  467. #{tenantId}
  468. </foreach>
  469. </select>
  470. </mapper>