Files
zxjp-web/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml
苏竹红 a444130b21 feat:bot
2025-12-09 15:39:43 +08:00

289 lines
13 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.cool.store.mapper.StoreMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.StoreDO">
<!--
WARNING - @mbggenerated
-->
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="store_id" property="storeId" jdbcType="VARCHAR"/>
<result column="store_name" property="storeName" jdbcType="VARCHAR"/>
<result column="store_num" property="storeNum" jdbcType="VARCHAR"/>
<result column="store_address" property="storeAddress" jdbcType="VARCHAR"/>
<result column="location_address" property="locationAddress" jdbcType="VARCHAR"/>
<result column="is_lock" property="isLock" jdbcType="CHAR"/>
<result column="longitude_latitude" property="longitudeLatitude" jdbcType="VARCHAR"/>
<result column="longitude" property="longitude" jdbcType="VARCHAR"/>
<result column="latitude" property="latitude" jdbcType="VARCHAR"/>
<result column="is_delete" property="isDelete" jdbcType="CHAR"/>
<result column="telephone" property="telephone" jdbcType="VARCHAR"/>
<result column="business_hours" property="businessHours" jdbcType="VARCHAR"/>
<result column="store_acreage" property="storeAcreage" jdbcType="VARCHAR"/>
<result column="store_bandwidth" property="storeBandwidth" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="BIGINT"/>
<result column="create_name" property="createName" jdbcType="VARCHAR"/>
<result column="create_user" property="createUser" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="BIGINT"/>
<result column="update_name" property="updateName" jdbcType="VARCHAR"/>
<result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="LONGVARCHAR"/>
<result column="is_device" property="isDevice" jdbcType="VARCHAR"/>
<result column="aliyun_corp_id" property="aliyunCorpId" jdbcType="VARCHAR"/>
<result column="vds_corp_id" property="vdsCorpId" jdbcType="VARCHAR"/>
<result column="syn_ding_dept_id" property="synDingDeptId" jdbcType="VARCHAR"/>
<result column="region_path" property="regionPath" jdbcType="VARCHAR"/>
<result column="has_camera" property="hasCamera" jdbcType="TINYINT"/>
<result column="region_id" property="regionId" jdbcType="VARCHAR"/>
<result column="store_status" property="storeStatus" jdbcType="VARCHAR"/>
<result column="open_date" property="openDate" jdbcType="DATE"/>
<result column="monthly_rent" property="monthlyRent"/>
<result column="monthly_personnel_salary" property="monthlyPersonnelSalary"/>
<result column="monthly_other_expenses" property="monthlyOtherExpenses"/>
<result column="unified_management" property="unifiedManagement" jdbcType="TINYINT"/>
<result column="join_model" property="joinModel" jdbcType="TINYINT"/>
<result column="join_brand" property="joinBrand" jdbcType="TINYINT"/>
<result column="store_type" property="storeType" jdbcType="TINYINT"/>
<result column="mini_program_order_store_name" property="miniProgramOrderStoreName"/>
<result column="is_iot" property="isIot" jdbcType="TINYINT"/>
<result column="addressee_name" property="addresseeName" jdbcType="VARCHAR"/>
<result column="addressee_mobile" property="addresseeMobile" jdbcType="VARCHAR"/>
<result column="addressee_area" property="addresseeArea" jdbcType="VARCHAR"/>
<result column="addressee_address" property="addresseeAddress" jdbcType="VARCHAR"/>
<result column="branch" property="branch" jdbcType="TINYINT"/>
</resultMap>
<select id="getByStoreId" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where store_id = #{storeId}
</select>
<select id="getEffectiveByStoreId" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where store_id = #{storeId} AND is_delete = 'effective'
</select>
<select id="getEffectiveStoreByStoreIds" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where is_delete = 'effective'
<if test="storeIds != null">
<foreach collection="storeIds" item="item" separator="," open="and store_id in (" close=")">
#{item}
</foreach>
</if>
</select>
<select id="getStoreByStoreIds" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
<where>
<if test="storeIds != null">
<foreach collection="storeIds" item="item" separator="," open="and store_id in (" close=")">
#{item}
</foreach>
</if>
</where>
</select>
<select id="listStoreByRegionId" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where is_delete = 'effective'
<if test="regionId != null and regionId!= '' ">
and region_path like concat('%/', #{regionId}, '/%')
</if>
</select>
<select id="getStoreNumByStoreIds" resultType="java.lang.String">
select store_num
from store_${enterpriseId}
where is_delete = 'effective'
<if test="storeIds != null">
<foreach collection="storeIds" item="item" separator="," open="and store_id in (" close=")">
#{item}
</foreach>
</if>
</select>
<select id="getByStoreNum" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where store_num = #{storeNum} and is_delete = 'effective'
</select>
<select id="listByMobile" resultMap="BaseResultMap">
select a.*
from store_${enterpriseId} a left join store_master_signer_info_${enterpriseId} b on a.store_id = b.store_id
<where>
and a.is_delete = 'effective'
<if test="mobile!=null and mobile !=''">
and ( b.signer1_mobile = #{mobile} or b.signer2_mobile = #{mobile})
</if>
</where>
union
select *
from store_${enterpriseId}
<where>
and is_delete = 'effective'
<if test="mobile!=null and mobile !=''">
and `extend_field` like concat('%', #{mobile}, '%')
</if>
</where>
limit 10
</select>
<select id="getSubStoreByRegionIdsAndMobile" resultType="com.cool.store.response.MiniShopsResponse">
<choose>
<!-- 情况1regionIdList不为空使用UNION优化 -->
<when test="regionIdList != null and regionIdList.size > 0">
SELECT store_id as storeId, store_name as shopName, store_num as shopCode, store_address as detailAddress
FROM store_${enterpriseId} a
WHERE a.is_delete = 'effective' and a.store_status != 'closed'
<if test="storeName!=null and storeName!=''">
AND (a.store_name LIKE CONCAT('%', #{storeName}, '%') or a.store_num LIKE CONCAT('%', #{storeName}, '%'))
</if>
<if test="storeNum!=null and storeNum!=''">
AND a.store_num = #{storeNum}
</if>
AND (
<foreach collection="regionIdList" item="regionId" separator=" OR ">
a.region_path LIKE CONCAT('%/', #{regionId}, '/%')
</foreach>
)
UNION
SELECT a.store_id as storeId, a.store_name as shopName, a.store_num as shopCode, a.store_address as detailAddress
FROM store_${enterpriseId} a
INNER JOIN store_master_signer_info_${enterpriseId} b ON a.store_id = b.store_id
WHERE a.is_delete = 'effective' and a.store_status != 'closed'
<if test="storeName!=null and storeName!=''">
AND (a.store_name LIKE CONCAT('%', #{storeName}, '%') or a.store_num LIKE CONCAT('%', #{storeName}, '%'))
</if>
<if test="storeNum!=null and storeNum!=''">
AND a.store_num = #{storeNum}
</if>
AND (b.signer1_mobile = #{mobile} OR b.signer2_mobile = #{mobile})
</when>
<!-- 情况2regionIdList为空直接查询关联表 -->
<otherwise>
SELECT a.store_id as storeId, a.store_name as shopName, a.store_num as shopCode, a.store_address as detailAddress
FROM store_${enterpriseId} a
INNER JOIN store_master_signer_info_${enterpriseId} b ON a.store_id = b.store_id
WHERE a.is_delete = 'effective' and a.store_status != 'closed'
<if test="storeName!=null and storeName!=''">
AND (a.store_name LIKE CONCAT('%', #{storeName}, '%') or a.store_num LIKE CONCAT('%', #{storeName}, '%'))
</if>
<if test="storeNum!=null and storeNum!=''">
AND a.store_num = #{storeNum}
</if>
AND (b.signer1_mobile = #{mobile} OR b.signer2_mobile = #{mobile})
</otherwise>
</choose>
</select>
<select id="list" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where is_delete = 'effective'
<if test="isIot != null">
AND is_iot = #{isIot}
</if>
order by id asc
</select>
<select id="getStoreAreaList" resultType="com.cool.store.dto.store.StoreAreaDTO">
select
a.store_num as storeCode,
a.store_name as storeName,
a.store_id as storeId,
a.region_path as regionPath,
a.region_id as regionId,
a.region_id as areaId,
a.store_status as storeStatus
FROM store_${enterpriseId} a
<where>
a.is_delete='effective'
<if test="storeIds!=null and storeIds.size>0">
<foreach collection="storeIds" item="storeId" index="index" separator="," open="and a.store_id in("
close=")">
#{storeId}
</foreach>
</if>
</where>
</select>
<select id="getStoreNumByStoreCodes" resultMap="BaseResultMap">
select *
from store_${enterpriseId}
where is_delete = 'effective'
<if test="storeCodeIds != null">
<foreach collection="storeCodeIds" item="item" separator="," open="and store_num in (" close=")">
#{item}
</foreach>
</if>
</select>
<select id="listStoreByRegionPathList" resultType="com.cool.store.dto.store.StoreAreaDTO">
select
store_name as storeName,
store_id as storeId,
region_path as regionPath,
region_id as regionId,
region_id as areaId
from store_${enterpriseId}
where is_delete = 'effective'
<if test="regionPathList != null and regionPathList.size >0 ">
<foreach collection="regionPathList" item="regionPath" separator=" or " open="and (" close=" )">
region_path like concat(#{regionPath}, '%')
</foreach>
</if>
</select>
<insert id="batchInsertOrUpdateOrderTime">
INSERT INTO store_extend_info_${enterpriseId}
<trim prefix="(" suffix=")" suffixOverrides=",">
store_id,
latest_order_time
</trim>
VALUES
<foreach collection="dtoList" item="dto" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
#{dto.storeId},
#{dto.latestOrderTime}
</trim>
</foreach>
ON DUPLICATE KEY UPDATE
<trim suffixOverrides=",">
store_id = VALUES(store_id),
latest_order_time = VALUES(latest_order_time),
update_time = now(),
</trim>
</insert>
<select id="getAllStoreIdAndNum" resultType="com.cool.store.entity.StoreDO">
SELECT store_id, store_num
FROM store_${enterpriseId}
WHERE is_delete = 'effective'
<if test="storeStatus != null and !storeStatus.isEmpty()">
AND store_status IN
<foreach item="item" collection="storeStatus" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</select>
<select id="getStoreScore" resultType="java.math.BigDecimal">
SELECT score FROM store_extend_info_${enterpriseId}
WHERE store_id = #{storeId}
</select>
<insert id="updateStoreScore">
INSERT INTO store_extend_info_${enterpriseId} (store_id, score) VALUES (#{storeId}, #{score})
ON DUPLICATE KEY UPDATE
score = values(score)
</insert>
</mapper>