package com.zswl.dataservice.dao.impl; import com.zswl.dataservice.dao.extend.UserDaoExtend; import com.zswl.dataservice.domain.user.User; import com.zswl.dataservice.helper.DBHelper; import com.zswl.dataservice.model.user.UserSearchParams; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; /** * @Author TRX * @CreateDate: 2023/4/6 * @Version: 1.0 */ public class UserDaoImpl implements UserDaoExtend { @Autowired private MongoTemplate mongoTemplate; @Autowired private DBHelper dbHelper; @Override public Page page(Pageable pageable, UserSearchParams param) { Criteria criteria = new Criteria(); if (param.getUserType() != null) { criteria.and("userType").is(param.getUserType()); } // 模糊搜索 List criterias = new ArrayList<>(); if (StringUtils.isNotEmpty(param.getLoginName())) { Pattern pattern = Pattern.compile("^.*" + param.getLoginName() + ".*$"); criterias.add(Criteria.where("loginName").is(pattern)); } if (StringUtils.isNotEmpty(param.getUserName())) { Pattern pattern = Pattern.compile("^.*" + param.getUserName() + ".*$"); criterias.add(Criteria.where("userName").is(pattern)); } if (StringUtils.isNotEmpty(param.getPhone())) { Pattern pattern = Pattern.compile("^.*" + param.getPhone() + ".*$"); criterias.add(Criteria.where("phone").is(pattern)); } if (!CollectionUtils.isEmpty(criterias)) { criteria.andOperator(criterias.toArray(new Criteria[]{})); } criteria.and("loginName").ne("admin"); criteria.and("isDelete").ne(Boolean.TRUE); Sort sort = param.getSort(); if (ObjectUtils.isEmpty(sort)) { sort = Sort.by(Sort.Order.desc("createTime")); } Query query = Query.query(criteria); query.with(sort); return dbHelper.pages(query, pageable, User.class); } }