Merge #37 into master from cc_20251208_visit
feat:拜访字段调整
* cc_20251208_visit: (19 commits squashed)
- feat:拜访记录
- fix:拜访详情接口新增字段
- fix:新增状态转义字段
- fix:惩处单查询提供惩处待处理、惩处已处理状态筛选
- fix
- fix:管理员能查看所有加盟商
- fix:去掉部分字段非空校验
- fix:空校验
- Merge branch 'master' into cc_20251208_visit
# Conflicts:
#	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
#	coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java
#	coolstore-partner-service/src/main/java/com/cool/store/service/impl/UserAuthMappingServiceImpl.java
- fix
- fix:拜访记录失效延时消息
- fix:拜访记录统计
- fix:拜访记录统计新增筛选条件
- fix:字段转义
- feat:拜访调整
- feat:拜访调整_过滤我的
- feat:拜访调整_过滤我的
- feat:拜访字段调整
- feat:拜访字段调整
Signed-off-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/37
This commit is contained in:
@@ -6,7 +6,9 @@ import com.cool.store.mapper.store.StoreMasterSignerInfoMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -41,4 +43,15 @@ public class StoreMasterSignerInfoDAO {
|
||||
public StoreMasterSignerInfoDO getByStoreId(String storeId) {
|
||||
return storeMasterSignerInfoMapper.selectOne(StoreMasterSignerInfoDO.builder().storeId(storeId).build());
|
||||
}
|
||||
|
||||
public List<StoreMasterSignerInfoDO> getListByIdCard(Collection<String> idCards) {
|
||||
if (CollectionUtils.isEmpty(idCards)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Example example = new Example(StoreMasterSignerInfoDO.class);
|
||||
example.createCriteria()
|
||||
.orIn("signer1IdCardNo", idCards)
|
||||
.orIn("signer2IdCardNo", idCards);
|
||||
return storeMasterSignerInfoMapper.selectByExample(example);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
package com.cool.store.dao.visit;
|
||||
|
||||
import com.alibaba.excel.util.CollectionUtils;
|
||||
import com.cool.store.entity.visit.VisitRecordDO;
|
||||
import com.cool.store.enums.visit.VisitStatusEnum;
|
||||
import com.cool.store.mapper.visit.VisitRecordMapper;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
import com.cool.store.vo.visit.VisitPartnerListVO;
|
||||
import com.cool.store.vo.visit.VisitRecordListVO;
|
||||
import com.cool.store.vo.visit.VisitRecordStatusStatisticsVO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 拜访记录DAO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/12/8
|
||||
*/
|
||||
@Repository
|
||||
@AllArgsConstructor
|
||||
public class VisitRecordDAO {
|
||||
private final VisitRecordMapper visitRecordMapper;
|
||||
|
||||
public Boolean insertSelective(VisitRecordDO visitRecordDO) {
|
||||
return visitRecordMapper.insertSelective(visitRecordDO) > 0;
|
||||
}
|
||||
|
||||
public Boolean updateSelective(VisitRecordDO visitRecordDO) {
|
||||
return visitRecordMapper.updateByPrimaryKeySelective(visitRecordDO) > 0;
|
||||
}
|
||||
|
||||
public VisitRecordDO getById(Long id) {
|
||||
return visitRecordMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询拜访加盟商
|
||||
* @param regionIds 加盟商所属大区id
|
||||
* @param keyword 加盟商姓名或手机号
|
||||
* @return 拜访加盟商列表VO
|
||||
*/
|
||||
public List<VisitPartnerListVO> getPartnerList(List<Long> regionIds, String keyword, String userId) {
|
||||
return visitRecordMapper.getPartnerList(regionIds, keyword, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询拜访加盟商线索id
|
||||
* @param regionIds 加盟商所属大区id
|
||||
* @param keyword 加盟商姓名或手机号
|
||||
* @param userId 拜访用户id
|
||||
* @return 线索id列表
|
||||
*/
|
||||
public List<Long> getPartnerLineId(List<Long> regionIds, String keyword, String userId) {
|
||||
return visitRecordMapper.getPartnerLineId(regionIds, keyword, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据线索id查询拜访记录列表
|
||||
* @param lineIds 线索id
|
||||
* @return 拜访记录列表VO列表
|
||||
*/
|
||||
public List<VisitPartnerListVO> getVisitRecordListByLineIds(List<Long> lineIds, String userId) {
|
||||
if (CollectionUtils.isEmpty(lineIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return visitRecordMapper.getVisitRecordListByLineIds(lineIds, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据线索查询
|
||||
* @param lineId 线索id
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return 拜访记录列表
|
||||
*/
|
||||
public List<VisitRecordDO> getByLineId(Long lineId, Date startDate, Date endDate, String userId) {
|
||||
Example example = new Example(VisitRecordDO.class);
|
||||
Example.Criteria criteria = example.createCriteria().andEqualTo("lineId", lineId)
|
||||
.andGreaterThanOrEqualTo("visitDate", startDate)
|
||||
.andLessThanOrEqualTo("visitDate", endDate);
|
||||
if (StringUtils.isNotBlank(userId)) {
|
||||
criteria.andEqualTo("userId", userId);
|
||||
}
|
||||
example.setOrderByClause("create_time DESC");
|
||||
return visitRecordMapper.selectByExample(example);
|
||||
}
|
||||
|
||||
public Boolean deleteById(Long id) {
|
||||
return visitRecordMapper.deleteByPrimaryKey(id) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 拜访记录列表
|
||||
* @param request 拜访记录查询Request
|
||||
* @return 拜访记录列表VO列表
|
||||
*/
|
||||
public List<VisitRecordListVO> getVisitRecordList(VisitRecordQueryRequest request) {
|
||||
return visitRecordMapper.getVisitRecordList(request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据线索id查询已完成拜访数量
|
||||
* @param lineId 线索id
|
||||
* @return 数量
|
||||
*/
|
||||
public Integer getCompleteVisitNum(Long lineId) {
|
||||
return visitRecordMapper.selectCount(VisitRecordDO.builder().lineId(lineId).status(VisitStatusEnum.COMPLETE.getStatus()).build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计
|
||||
*/
|
||||
public VisitRecordStatusStatisticsVO countStatusStatistics(VisitRecordQueryRequest request) {
|
||||
return visitRecordMapper.countStatusStatistics(request);
|
||||
}
|
||||
}
|
||||
@@ -87,6 +87,8 @@ public interface RegionMapper {
|
||||
|
||||
List<String> getSubRegionIdsByRegionIds( @Param("regionIds")List<String> regionIds);
|
||||
|
||||
List<String> getSubRegionIdsExcludeStore(@Param("regionIds")List<String> regionIds);
|
||||
|
||||
List<Long> getSubRegionIdsByRegionIdList( @Param("regionIds")List<Long> regionIds);
|
||||
|
||||
List<String> getStoreIdsByRegionIds( @Param("regionIds")List<String> regionIds);
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.cool.store.mapper.oplog;
|
||||
|
||||
import com.cool.store.entity.oplog.SysLogDO;
|
||||
import tk.mybatis.mapper.common.Mapper;
|
||||
|
||||
public interface SysLogMapper extends Mapper<SysLogDO> {
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.cool.store.mapper.visit;
|
||||
|
||||
import com.cool.store.entity.visit.VisitRecordDO;
|
||||
import com.cool.store.request.visit.VisitRecordQueryRequest;
|
||||
import com.cool.store.vo.visit.VisitPartnerListVO;
|
||||
import com.cool.store.vo.visit.VisitRecordListVO;
|
||||
import com.cool.store.vo.visit.VisitRecordStatusStatisticsVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import tk.mybatis.mapper.common.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface VisitRecordMapper extends Mapper<VisitRecordDO> {
|
||||
|
||||
/**
|
||||
* 查询拜访加盟商
|
||||
* @param regionIds 加盟商所属大区id
|
||||
* @param keyword 加盟商姓名或手机号
|
||||
* @return 拜访加盟商列表VO
|
||||
*/
|
||||
List<VisitPartnerListVO> getPartnerList(@Param("regionIds") List<Long> regionIds,
|
||||
@Param("keyword") String keyword,
|
||||
@Param("userId") String userId);
|
||||
|
||||
/**
|
||||
* 拜访记录列表
|
||||
* @param request 拜访记录查询Request
|
||||
* @return 拜访记录列表VO列表
|
||||
*/
|
||||
List<VisitRecordListVO> getVisitRecordList(@Param("request") VisitRecordQueryRequest request);
|
||||
|
||||
/**
|
||||
* 查询拜访加盟商线索id
|
||||
* @param regionIds 加盟商所属大区id
|
||||
* @param keyword 加盟商姓名或手机号
|
||||
* @param userId 拜访用户id
|
||||
* @return 线索id列表
|
||||
*/
|
||||
List<Long> getPartnerLineId(@Param("regionIds") List<Long> regionIds,
|
||||
@Param("keyword") String keyword,
|
||||
@Param("userId") String userId);
|
||||
|
||||
/**
|
||||
* 根据线索id查询拜访记录列表
|
||||
* @param lineIds 线索id
|
||||
* @return 拜访记录列表VO列表
|
||||
*/
|
||||
List<VisitPartnerListVO> getVisitRecordListByLineIds(@Param("lineIds") List<Long> lineIds, @Param("userId") String userId);
|
||||
|
||||
/**
|
||||
* 统计:本月已完成数量、全部已完成数量、全部未完成数量、全部已失效数量
|
||||
* - 本月口径:按 visit_date 在本月范围内且 status=2
|
||||
* - 全部口径:不限制月份
|
||||
*/
|
||||
VisitRecordStatusStatisticsVO countStatusStatistics(@Param("request") VisitRecordQueryRequest request);
|
||||
|
||||
}
|
||||
@@ -285,6 +285,17 @@
|
||||
<foreach collection="regionIds" separator=" or " open="(" close=")" item="region" > region_path like concat("%/", #{region}, "/%")</foreach>
|
||||
</select>
|
||||
|
||||
<select id="getSubRegionIdsExcludeStore" resultType="string">
|
||||
select
|
||||
id
|
||||
from
|
||||
region_${enterpriseId}
|
||||
where
|
||||
deleted = 0 and region_type != 'store'
|
||||
and
|
||||
<foreach collection="regionIds" separator=" or " open="(" close=")" item="region" > region_path like concat("%/", #{region}, "/%")</foreach>
|
||||
</select>
|
||||
|
||||
<select id="getStoreIdsByRegionIds" resultType="string">
|
||||
select
|
||||
store_id
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<?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.oplog.SysLogMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.oplog.SysLogDO">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="menus" jdbcType="VARCHAR" property="menus" />
|
||||
<result column="module" jdbcType="VARCHAR" property="module" />
|
||||
<result column="func" jdbcType="VARCHAR" property="func" />
|
||||
<result column="sub_func" jdbcType="VARCHAR" property="subFunc" />
|
||||
<result column="op_user_id" jdbcType="VARCHAR" property="opUserId" />
|
||||
<result column="op_user_name" jdbcType="VARCHAR" property="opUserName" />
|
||||
<result column="op_user_mobile" jdbcType="VARCHAR" property="opUserMobile" />
|
||||
<result column="op_time" jdbcType="TIMESTAMP" property="opTime" />
|
||||
<result column="op_type" jdbcType="VARCHAR" property="opType" />
|
||||
<result column="op_content" jdbcType="VARCHAR" property="opContent" />
|
||||
<result column="op_ip" jdbcType="VARCHAR" property="opIp" />
|
||||
<result column="device_info" jdbcType="VARCHAR" property="deviceInfo" />
|
||||
<result column="req_params" jdbcType="VARCHAR" property="reqParams" />
|
||||
<result column="resp_params" jdbcType="VARCHAR" property="respParams" />
|
||||
<result column="url" jdbcType="VARCHAR" property="url" />
|
||||
<result column="extend_info" jdbcType="VARCHAR" property="extendInfo" />
|
||||
<result column="op_user_jobnumber" jdbcType="LONGVARCHAR" property="opUserJobnumber" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -0,0 +1,170 @@
|
||||
<?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.visit.VisitRecordMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.visit.VisitRecordDO">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="visit_no" jdbcType="VARCHAR" property="visitNo" />
|
||||
<result column="line_id" jdbcType="BIGINT" property="lineId" />
|
||||
<result column="status" jdbcType="BIT" property="status" />
|
||||
<result column="complete_edit" jdbcType="BIT" property="completeEdit" />
|
||||
<result column="sign_in_time" jdbcType="TIMESTAMP" property="signInTime" />
|
||||
<result column="sign_in_lon_lat" jdbcType="VARCHAR" property="signInLonLat" />
|
||||
<result column="sign_in_address" jdbcType="VARCHAR" property="signInAddress" />
|
||||
<result column="sign_out_time" jdbcType="TIMESTAMP" property="signOutTime" />
|
||||
<result column="sign_out_lon_lat" jdbcType="VARCHAR" property="signOutLonLat" />
|
||||
<result column="sign_out_address" jdbcType="VARCHAR" property="signOutAddress" />
|
||||
<result column="visit_date" jdbcType="DATE" property="visitDate" />
|
||||
<result column="desire" jdbcType="VARCHAR" property="desire" />
|
||||
<result column="desire_city" jdbcType="VARCHAR" property="desireCity" />
|
||||
<result column="desire_district" jdbcType="VARCHAR" property="desireDistrict" />
|
||||
<result column="existing_shop_point" jdbcType="BIT" property="existingShopPoint" />
|
||||
<result column="remark" jdbcType="VARCHAR" property="remark" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="photos" jdbcType="LONGVARCHAR" property="photos" />
|
||||
<result column="user_id" jdbcType="VARCHAR" property="userId" />
|
||||
</resultMap>
|
||||
|
||||
<select id="getPartnerList" resultType="com.cool.store.vo.visit.VisitPartnerListVO">
|
||||
SELECT a.line_id, a.visit_num, b.username name, b.mobile
|
||||
<if test="userId != null and userId != ''">
|
||||
, a.my_visit_num
|
||||
</if>
|
||||
FROM (
|
||||
SELECT line_id, COUNT(1) visit_num
|
||||
<if test="userId != null and userId != ''">
|
||||
, SUM(CASE WHEN user_id = #{userId} THEN 1 ELSE 0 END) my_visit_num
|
||||
</if>
|
||||
FROM zxjp_visit_record
|
||||
WHERE status = 2
|
||||
GROUP BY line_id
|
||||
) a
|
||||
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
||||
<where>
|
||||
<if test="userId != null and userId != ''">
|
||||
AND a.my_visit_num > 0
|
||||
</if>
|
||||
<if test="regionIds != null and !regionIds.isEmpty()">
|
||||
AND b.region_id IN
|
||||
<foreach item="regionId" collection="regionIds" separator="," open="(" close=")">
|
||||
#{regionId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="keyword != null and keyword != ''">
|
||||
AND (b.mobile LIKE CONCAT('%', #{keyword}, '%') OR b.username LIKE CONCAT('%', #{keyword}, '%'))
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getVisitRecordList" resultType="com.cool.store.vo.visit.VisitRecordListVO">
|
||||
SELECT a.id, a.line_id, a.visit_no, a.visit_date, a.sign_in_address, a.desire, a.desire_city,
|
||||
a.desire_district, a.existing_shop_point, a.photos, a.status,
|
||||
b.username name, b.mobile,a.user_id as visitUserId
|
||||
FROM zxjp_visit_record a
|
||||
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
||||
<where>
|
||||
<if test="request.visitUserId!=null and request.visitUserId!=''">
|
||||
and a.user_id = #{request.visitUserId}
|
||||
</if>
|
||||
<if test="request.lineId != null">
|
||||
AND a.line_id = #{request.lineId}
|
||||
</if>
|
||||
<if test="request.keyword != null and request.keyword != ''">
|
||||
AND (b.mobile LIKE CONCAT('%', #{request.keyword}, '%') OR b.username LIKE CONCAT('%', #{request.keyword}, '%'))
|
||||
</if>
|
||||
<if test="request.visitNo != null and request.visitNo != ''">
|
||||
AND a.visit_no LIKE CONCAT('%', #{request.visitNo}, '%')
|
||||
</if>
|
||||
<if test="request.visitStartDate != null">
|
||||
AND a.visit_date >= #{request.visitStartDate}
|
||||
</if>
|
||||
<if test="request.visitEndDate != null">
|
||||
AND a.visit_date <= #{request.visitEndDate}
|
||||
</if>
|
||||
<if test="request.status != null">
|
||||
AND a.status = #{request.status}
|
||||
</if>
|
||||
<if test="request.userId != null">
|
||||
AND a.user_id = #{request.userId}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY a.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="getPartnerLineId" resultType="java.lang.Long">
|
||||
SELECT DISTINCT a.line_id
|
||||
FROM zxjp_visit_record a
|
||||
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
||||
<where>
|
||||
<if test="userId != null and userId != ''">
|
||||
AND a.user_id = #{userId}
|
||||
</if>
|
||||
<if test="regionIds != null and !regionIds.isEmpty()">
|
||||
AND b.region_id IN
|
||||
<foreach item="regionId" collection="regionIds" separator="," open="(" close=")">
|
||||
#{regionId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="keyword != null and keyword != ''">
|
||||
AND (b.mobile LIKE CONCAT('%', #{keyword}, '%') OR b.username LIKE CONCAT('%', #{keyword}, '%'))
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getVisitRecordListByLineIds" resultType="com.cool.store.vo.visit.VisitPartnerListVO">
|
||||
SELECT line_id, SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) visit_num
|
||||
<if test="userId != null and userId != ''">
|
||||
, SUM(CASE WHEN user_id = #{userId} AND status = 2 THEN 1 ELSE 0 END) my_visit_num
|
||||
</if>
|
||||
FROM zxjp_visit_record
|
||||
WHERE line_id IN
|
||||
<foreach item="lineId" collection="lineIds" separator="," open="(" close=")">
|
||||
#{lineId}
|
||||
</foreach>
|
||||
GROUP BY line_id
|
||||
</select>
|
||||
|
||||
<select id="countStatusStatistics" resultType="com.cool.store.vo.visit.VisitRecordStatusStatisticsVO">
|
||||
SELECT
|
||||
SUM(CASE
|
||||
WHEN a.status = 2
|
||||
AND a.visit_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
|
||||
AND a.visit_date < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH)
|
||||
THEN 1 ELSE 0
|
||||
END) AS monthCompletedCount,
|
||||
SUM(CASE WHEN a.status = 2 THEN 1 ELSE 0 END) AS completedCount,
|
||||
SUM(CASE WHEN a.status IN (0, 1) THEN 1 ELSE 0 END) AS uncompletedCount,
|
||||
SUM(CASE WHEN a.status = 3 THEN 1 ELSE 0 END) AS invalidCount
|
||||
FROM zxjp_visit_record a
|
||||
INNER JOIN xfsg_line_info b ON a.line_id = b.id AND b.deleted = 0
|
||||
<where>
|
||||
<if test="request.visitUserId!=null and request.visitUserId!=''">
|
||||
and a.user_id = #{request.visitUserId}
|
||||
</if>
|
||||
<if test="request.lineId != null">
|
||||
AND a.line_id = #{request.lineId}
|
||||
</if>
|
||||
<if test="request.keyword != null and request.keyword != ''">
|
||||
AND (b.mobile LIKE CONCAT('%', #{request.keyword}, '%') OR b.username LIKE CONCAT('%', #{request.keyword}, '%'))
|
||||
</if>
|
||||
<if test="request.visitNo != null and request.visitNo != ''">
|
||||
AND a.visit_no LIKE CONCAT('%', #{request.visitNo}, '%')
|
||||
</if>
|
||||
<if test="request.visitStartDate != null">
|
||||
AND a.visit_date >= #{request.visitStartDate}
|
||||
</if>
|
||||
<if test="request.visitEndDate != null">
|
||||
AND a.visit_date <= #{request.visitEndDate}
|
||||
</if>
|
||||
<if test="request.status != null">
|
||||
AND a.status = #{request.status}
|
||||
</if>
|
||||
<if test="request.userId != null">
|
||||
AND a.user_id = #{request.userId}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user