通告、意见反馈、举报

This commit is contained in:
13405411873 2025-03-28 18:59:14 +08:00
parent 1d5b73a9b6
commit 5277db0d5c
21 changed files with 237 additions and 97 deletions

View File

@ -6,6 +6,9 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.busi.domain.BusiReport;
import com.ruoyi.busi.query.BusiFeedbackQuery;
import com.ruoyi.busi.vo.BusiFeedbackVo;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -28,7 +31,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
/**
* 意见反馈Controller
*
*
* @author 朱春云
* @date 2025-03-17
*/
@ -44,12 +47,12 @@ public class BusiFeedbackController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('busi:feedback:list')")
@GetMapping("/list")
public AjaxResult list(BusiFeedback busiFeedback,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
public AjaxResult list(BusiFeedbackQuery busiFeedback,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
{
Page<BusiFeedback> page = new Page<>(pageNum, pageSize);
IPage<BusiFeedback> list = busiFeedbackService.queryListPage(busiFeedback,page);
Page<BusiFeedbackVo> page = new Page<>(pageNum, pageSize);
IPage<BusiFeedbackVo> list = busiFeedbackService.queryListPage(busiFeedback,page);
return success(list);
}
@ -109,4 +112,15 @@ public class BusiFeedbackController extends BaseController
List<String> list = new ArrayList<>(Arrays.asList(ids));
return toAjax(busiFeedbackService.removeByIds(list));
}
/**
* 处理反馈记录
*/
@PreAuthorize("@ss.hasPermi('busi:feedback:edit')")
@PostMapping("/dealFeedback")
public AjaxResult dealFeedback(@RequestBody BusiFeedback busiFeedback)
{
busiFeedbackService.dealFeedback(busiFeedback);
return success();
}
}

View File

@ -144,8 +144,8 @@ public class BusiNoticeController extends BaseController
* @author vinjor-M
* @date 15:39 2025/3/25
* @param query 查询条件
* @param pageNum TODO
* @param pageSize TODO
* @param pageNum TODO
* @param pageSize TODO
* @return com.ruoyi.common.core.domain.AjaxResult
**/
@GetMapping("/appList")

View File

@ -6,6 +6,8 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.busi.query.BusiReportQuery;
import com.ruoyi.busi.vo.BusiReportVo;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -28,7 +30,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
/**
* 举报记录Controller
*
*
* @author 朱春云
* @date 2025-03-17
*/
@ -44,12 +46,12 @@ public class BusiReportController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('busi:report:list')")
@GetMapping("/list")
public AjaxResult list(BusiReport busiReport,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
public AjaxResult list(BusiReportQuery busiReport,
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
{
Page<BusiReport> page = new Page<>(pageNum, pageSize);
IPage<BusiReport> list = busiReportService.queryListPage(busiReport,page);
Page<BusiReportVo> page = new Page<>(pageNum, pageSize);
IPage<BusiReportVo> list = busiReportService.queryListPage(busiReport,page);
return success(list);
}
@ -87,6 +89,17 @@ public class BusiReportController extends BaseController
return toAjax(busiReportService.save(busiReport));
}
/**
* 处理举报记录
*/
@PreAuthorize("@ss.hasPermi('busi:report:edit')")
@PostMapping("/dealReport")
public AjaxResult dealReport(@RequestBody BusiReport busiReport)
{
busiReportService.dealReport(busiReport);
return success();
}
/**
* 修改举报记录
*/

View File

@ -147,7 +147,7 @@ public class BusiNotice extends DlBaseEntity
private Long approvalUserId;
/** 审核时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date approvalTime;

View File

@ -11,7 +11,7 @@ import com.ruoyi.common.core.domain.DlBaseEntity;
/**
* 举报记录对象 dl_busi_report
*
*
* @author 朱春云
* @date 2025-03-17
*/
@ -51,10 +51,6 @@ public class BusiReport extends DlBaseEntity
/** 举报类型code树形字典dl_report_type */
private String reportType;
/** 举报类型文本 */
@Excel(name = "举报类型文本")
private String reportTitle;
/** 举报描述 */
private String content;

View File

@ -4,18 +4,20 @@ import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.busi.domain.BusiFeedback;
import com.ruoyi.busi.query.BusiFeedbackQuery;
import com.ruoyi.busi.vo.BusiFeedbackVo;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 意见反馈Mapper接口
*
*
* @author 朱春云
* @date 2025-03-17
*/
@Mapper
public interface BusiFeedbackMapper extends BaseMapper<BusiFeedback>
{
IPage<BusiFeedback> queryListPage(@Param("entity") BusiFeedback entity, Page<BusiFeedback> page);
IPage<BusiFeedbackVo> queryListPage(@Param("entity") BusiFeedbackQuery entity, Page<BusiFeedbackVo> page);
}

View File

@ -4,18 +4,20 @@ import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.busi.domain.BusiReport;
import com.ruoyi.busi.query.BusiReportQuery;
import com.ruoyi.busi.vo.BusiReportVo;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 举报记录Mapper接口
*
*
* @author 朱春云
* @date 2025-03-17
*/
@Mapper
public interface BusiReportMapper extends BaseMapper<BusiReport>
{
IPage<BusiReport> queryListPage(@Param("entity") BusiReport entity, Page<BusiReport> page);
IPage<BusiReportVo> queryListPage(@Param("entity") BusiReportQuery entity, Page<BusiReportVo> page);
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.busi.query;
import lombok.Data;
@Data
public class BusiFeedbackQuery {
//用户姓名
private String userNickName;
//反馈人姓名
private String backUserNickName;
}

View File

@ -0,0 +1,17 @@
package com.ruoyi.busi.query;
import lombok.Data;
@Data
public class BusiReportQuery {
//举报人姓名
private String userNickName;
//被举报人姓名
private String reportUserNickName;
//被举报通告标题
private String reportNoticeTitle;
//举报类型文本
private String reportTitle;
//处理人姓名
private String dealUserName;
}

View File

@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.busi.domain.BusiFeedback;
import com.ruoyi.busi.query.BusiFeedbackQuery;
import com.ruoyi.busi.vo.BusiFeedbackVo;
/**
* 意见反馈Service接口
*
*
* @author 朱春云
* @date 2025-03-17
*/
public interface IBusiFeedbackService extends IService<BusiFeedback>
{
IPage<BusiFeedback> queryListPage(BusiFeedback pageReqVO, Page<BusiFeedback> page);
IPage<BusiFeedbackVo> queryListPage(BusiFeedbackQuery pageReqVO, Page<BusiFeedbackVo> page);
void dealFeedback(BusiFeedback busiFeedback);
}

View File

@ -5,14 +5,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.busi.domain.BusiReport;
import com.ruoyi.busi.query.BusiReportQuery;
import com.ruoyi.busi.vo.BusiReportVo;
/**
* 举报记录Service接口
*
*
* @author 朱春云
* @date 2025-03-17
*/
public interface IBusiReportService extends IService<BusiReport>
{
IPage<BusiReport> queryListPage(BusiReport pageReqVO, Page<BusiReport> page);
IPage<BusiReportVo> queryListPage(BusiReportQuery pageReqVO, Page<BusiReportVo> page);
void dealReport(BusiReport busiReport);
}

View File

@ -1,9 +1,13 @@
package com.ruoyi.busi.service.impl;
import java.util.List;
import com.ruoyi.busi.query.BusiFeedbackQuery;
import com.ruoyi.busi.vo.BusiFeedbackVo;
import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -13,7 +17,7 @@ import com.ruoyi.busi.service.IBusiFeedbackService;
/**
* 意见反馈Service业务层处理
*
*
* @author 朱春云
* @date 2025-03-17
*/
@ -24,7 +28,18 @@ public class BusiFeedbackServiceImpl extends ServiceImpl<BusiFeedbackMapper,Busi
private BusiFeedbackMapper busiFeedbackMapper;
@Override
public IPage<BusiFeedback> queryListPage(BusiFeedback pageReqVO, Page<BusiFeedback> page) {
public IPage<BusiFeedbackVo> queryListPage(BusiFeedbackQuery pageReqVO, Page<BusiFeedbackVo> page) {
return busiFeedbackMapper.queryListPage(pageReqVO, page);
}
/**
* 处理反馈
* @param busiFeedback
*/
@Override
public void dealFeedback(BusiFeedback busiFeedback) {
busiFeedback.setBackTime(DateUtils.getNowDate());
busiFeedback.setBackUserId(SecurityUtils.getUserId());
busiFeedbackMapper.updateById(busiFeedback);
}
}

View File

@ -70,6 +70,8 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
List<BusiNotice> list = this.list(queryWrapper);
//无问题数据直接审核通过
data.setApprovalStatus("1");
data.setApprovalUserId(null);
data.setApprovalTime(new Date());
//遍历 list的每条数据与data对比如果两条数据相似度大于70% 提出预警
for (BusiNotice busiNotice : list) {
double v1 = NoticeUtils.computeJaccardSimilarity(data.getTitle(), busiNotice.getTitle());
@ -151,15 +153,30 @@ public class BusiNoticeServiceImpl extends ServiceImpl<BusiNoticeMapper,BusiNoti
}
}else {
//如果是下架 回归草稿状态
data.setApprovalStatus("8");
//如果是关闭 关闭状态
data.setApprovalStatus("2");
}
this.updateById(data);
}
/**
* 审核接口
* @param query 审核参数
*/
@Override
public void auditInfo(BusiNoticeQuery query) {
BusiNotice busiNotice = this.getById(query.getId());
//1代表审核通过
if (query.getApprovalStatus().equals("1")){
busiNotice.setApprovalStatus("1");
}else {
busiNotice.setApprovalStatus("9");
}
busiNotice.setApprovalUserId(SecurityUtils.getUserId());
busiNotice.setApprovalTime(new Date());
busiNotice.setApprovalRemark(query.getApprovalRemark());
this.updateById(busiNotice);
}
/**

View File

@ -1,9 +1,13 @@
package com.ruoyi.busi.service.impl;
import java.util.List;
import com.ruoyi.busi.query.BusiReportQuery;
import com.ruoyi.busi.vo.BusiReportVo;
import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -13,7 +17,7 @@ import com.ruoyi.busi.service.IBusiReportService;
/**
* 举报记录Service业务层处理
*
*
* @author 朱春云
* @date 2025-03-17
*/
@ -24,7 +28,18 @@ public class BusiReportServiceImpl extends ServiceImpl<BusiReportMapper,BusiRepo
private BusiReportMapper busiReportMapper;
@Override
public IPage<BusiReport> queryListPage(BusiReport pageReqVO, Page<BusiReport> page) {
public IPage<BusiReportVo> queryListPage(BusiReportQuery pageReqVO, Page<BusiReportVo> page) {
return busiReportMapper.queryListPage(pageReqVO, page);
}
/**
* 处理举报
* @param busiReport 请求参数
*/
@Override
public void dealReport(BusiReport busiReport) {
busiReport.setDealTime(DateUtils.getNowDate());
busiReport.setDealUserId(SecurityUtils.getUserId());
busiReportMapper.updateById(busiReport);
}
}

View File

@ -12,6 +12,12 @@ import java.util.stream.Collectors;
@Component
public class NoticeUtils {
/**
* 比较两个文本字符串的相似度
* @param str1 文本1
* @param str2 文本2
* @return 相似度值范围在0到1之间值越大相似度越高
*/
public static double computeJaccardSimilarity(String str1, String str2) {
Set<String> set1 = Arrays.stream(str1.split("\\s+")) // 分词这里按空格分割可以根据需要调整正则表达式
.collect(Collectors.toSet());

View File

@ -0,0 +1,12 @@
package com.ruoyi.busi.vo;
import com.ruoyi.busi.domain.BusiFeedback;
import lombok.Data;
@Data
public class BusiFeedbackVo extends BusiFeedback {
//用户姓名
private String userNickName;
//反馈人姓名
private String backUserNickName;
}

View File

@ -25,4 +25,8 @@ public class BusiNoticeVo extends BusiNotice {
private Integer reportNum;
/**博主类型-text*/
private String bloggerTypesText;
/**
* 审核人姓名
*/
private String approvalUserName;
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.busi.vo;
import com.ruoyi.busi.domain.BusiReport;
import lombok.Data;
/**
* 举报记录视图对象
*/
@Data
public class BusiReportVo extends BusiReport {
//举报人姓名
private String userNickName;
//被举报人姓名
private String reportUserNickName;
//被举报通告标题
private String reportNoticeTitle;
//举报类型文本
private String reportTitle;
//处理人姓名
private String dealUserName;
}

View File

@ -3,35 +3,25 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.busi.mapper.BusiFeedbackMapper">
<resultMap type="BusiFeedback" id="BusiFeedbackResult">
<result property="id" column="id" />
<result property="userId" column="user_id" />
<result property="userType" column="user_type" />
<result property="content" column="content" />
<result property="images" column="images" />
<result property="backContent" column="back_content" />
<result property="backImages" column="back_images" />
<result property="backTime" column="back_time" />
<result property="backUserId" column="back_user_id" />
<result property="creator" column="creator" />
<result property="createTime" column="create_time" />
<result property="updater" column="updater" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBusiFeedbackVo">
select id, user_id, user_type, content, images, back_content, back_images, back_time, back_user_id, creator, create_time, updater, update_time, del_flag from dl_busi_feedback
</sql>
<select id="queryListPage" parameterType="BusiFeedback" resultMap="BusiFeedbackResult">
<include refid="selectBusiFeedbackVo"/>
<select id="queryListPage" resultType="com.ruoyi.busi.vo.BusiFeedbackVo">
select main.id, main.user_id, main.user_type, main.content, main.images, main.back_content,
main.back_images, main.back_time, main.back_user_id, main.creator, main.create_time, main.updater, main.update_time, main.del_flag
, su1.nick_name as userNickName, su2.nick_name as backUserNickName
from dl_busi_feedback main
inner join sys_user su1 on main.user_id = su1.user_id and su1.del_flag = '0'
left join sys_user su2 on main.back_user_id = su2.user_id
<where>
<if test="entity.userId != null "> and user_id like concat('%', #{entity.userId}, '%')</if>
<if test="entity.userType != null and entity.userType != ''"> and user_type = #{entity.userType}</if>
<if test="entity.backUserId != null "> and back_user_id = #{entity.backUserId}</if>
<if test="entity.createTime != null "> and create_time = #{entity.createTime}</if>
main.del_flag = '0'
<if test="entity.userNickName != null and entity.userNickName != '' ">
and su1.nick_name like concat('%', #{entity.userNickName}, '%')
</if>
<if test="entity.backUserNickName != null and entity.backUserNickName != ''">
and su2.nick_name like concat('%', #{entity.backUserNickName}, '%')
</if>
</where>
order by main.create_time asc
</select>
</mapper>
</mapper>

View File

@ -5,18 +5,20 @@
<mapper namespace="com.ruoyi.busi.mapper.BusiNoticeMapper">
<select id="queryListPage" parameterType="BusiNotice" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
<select id="queryListPage" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
select main.id, main.user_id, main.title, main.platform_code, main.province, main.city, main.fee_down, main.fee_up, main.is_self_price, main.gift_detail,
main.gift_price, main.end_date, main.brand, main.is_show_brand, main.need_num, main.fans_down, main.fans_up, main.is_eligible, main.pic, main.collect, main.detail, main.images,
main.blogger_types, main.is_show_tel, main.wechat, main.tel, main.group_image, main.is_use_coupon, main.approval_status, main.approval_user_id, main.approval_time,
main.approval_remark, main.creator, main.create_time, main.updater, main.update_time, main.del_flag,
uTable.nick_name as userNickName,
uTable.nick_name as userNickName,auditTable.nick_name as approvalUserName,ifnull(noticeView.view_num,0) as viewNum,
bTable.title as platformName
from dl_busi_notice main
left join sys_user uTable on main.user_id = uTable.user_id
left join sys_user auditTable on main.approval_user_id = auditTable.user_id
left join dl_base_category bTable on main.platform_code = bTable.code
left join dl_busi_notice_view noticeView on noticeView.id = main.id
<where>
main.del_flag = '0'
main.del_flag = '0' and main.approval_status != 8
<if test="entity.userNickName != null "> and uTable.nick_name like concat('%', #{entity.userNickName}, '%')</if>
<if test="entity.province != null "> and main.province = #{entity.province}</if>
<if test="entity.city != null "> and main.city = #{entity.city}</if>
@ -44,6 +46,7 @@
<if test="entity.approvalStatus != null and entity.approvalStatus != ''"> and main.approval_status = #{entity.approvalStatus}</if>
<if test="entity.params.beginCreateTime != null and entity.params.beginCreateTime != '' and entity.params.endCreateTime != null and entity.params.endCreateTime != ''"> and main.create_time between #{entity.params.beginCreateTime} and #{entity.params.endCreateTime}</if>
</where>
order by FIELD(main.approval_status,0,1,9,2) asc, main.create_time desc
</select>
<select id="queryListByUserId" resultType="com.ruoyi.busi.vo.BusiNoticeVo">
SELECT

View File

@ -3,40 +3,33 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.busi.mapper.BusiReportMapper">
<resultMap type="BusiReport" id="BusiReportResult">
<result property="id" column="id" />
<result property="userId" column="user_id" />
<result property="userType" column="user_type" />
<result property="reportUserId" column="report_user_id" />
<result property="reportUserType" column="report_user_type" />
<result property="reportNoticeId" column="report_notice_id" />
<result property="reportType" column="report_type" />
<result property="reportTitle" column="report_title" />
<result property="content" column="content" />
<result property="images" column="images" />
<result property="dealUserId" column="deal_user_id" />
<result property="dealResult" column="deal_result" />
<result property="dealTime" column="deal_time" />
<result property="creator" column="creator" />
<result property="createTime" column="create_time" />
<result property="updater" column="updater" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBusiReportVo">
select id, user_id, user_type, report_user_id, report_user_type, report_notice_id, report_type, report_title, content, images, deal_user_id, deal_result, deal_time, creator, create_time, updater, update_time, del_flag from dl_busi_report
</sql>
<select id="queryListPage" parameterType="BusiReport" resultMap="BusiReportResult">
<include refid="selectBusiReportVo"/>
<select id="queryListPage" resultType="com.ruoyi.busi.vo.BusiReportVo">
select main.id, main.user_id, main.user_type, main.report_user_id, main.report_user_type,
main.report_notice_id, main.report_type, main.content, main.images,
main.deal_user_id, main.deal_result, main.deal_time, main.creator, main.create_time,
su1.nick_name as userNickName,su2.nick_name as reportUserNickName,su3.nick_name as dealUserName,
notice.title as reportNoticeTitle, bTable.title as reportTitle
from dl_busi_report main
inner join sys_user su1 on main.user_id = su1.user_id and su1.del_flag = '0'
inner join sys_user su2 on main.report_user_id = su2.user_id and su2.del_flag = '0'
left join sys_user su3 on main.deal_user_id = su3.user_id
left join dl_busi_notice notice on main.report_notice_id = notice.id
left join dl_base_category bTable on main.report_type = bTable.code
<where>
<if test="entity.userId != null "> and user_id like concat('%', #{entity.userId}, '%')</if>
<if test="entity.reportUserId != null "> and report_user_id like concat('%', #{entity.reportUserId}, '%')</if>
<if test="entity.reportNoticeId != null and entity.reportNoticeId != ''"> and report_notice_id like concat('%', #{entity.reportNoticeId}, '%')</if>
<if test="entity.reportTitle != null and entity.reportTitle != ''"> and report_title = #{entity.reportTitle}</if>
<if test="entity.dealUserId != null "> and deal_user_id = #{entity.dealUserId}</if>
main.del_flag = '0'
<if test="entity.reportUserNickName != null and entity.reportUserNickName != '' ">
and su2.nick_name like concat('%', #{entity.reportUserNickName}, '%')
</if>
<if test="entity.reportNoticeTitle != null and entity.reportNoticeTitle != '' ">
and notice.title like concat('%', #{entity.reportNoticeTitle}, '%')
</if>
<if test="entity.dealUserName != null and entity.dealUserName != ''">
and su3.nick_name like concat('%', #{entity.dealUserName}, '%')
</if>
</where>
order by main.create_time asc
</select>
</mapper>
</mapper>