package com.moral.api.service.impl; 
 | 
  
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.ObjectUtils; 
 | 
import org.springframework.web.context.request.RequestContextHolder; 
 | 
import org.springframework.web.context.request.ServletRequestAttributes; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.Comparator; 
 | 
import java.util.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.LinkedHashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Objects; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
import javax.servlet.http.HttpServletRequest; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.moral.api.entity.Group; 
 | 
import com.moral.api.entity.Menu; 
 | 
import com.moral.api.entity.Organization; 
 | 
import com.moral.api.entity.User; 
 | 
import com.moral.api.entity.UserGroup; 
 | 
import com.moral.api.entity.UserLog; 
 | 
import com.moral.api.mapper.MenuMapper; 
 | 
import com.moral.api.mapper.UserGroupMapper; 
 | 
import com.moral.api.mapper.UserLogMapper; 
 | 
import com.moral.api.mapper.UserMapper; 
 | 
import com.moral.api.pojo.bo.UserBO; 
 | 
import com.moral.api.service.UserService; 
 | 
import com.moral.api.utils.OperationLogUtils; 
 | 
import com.moral.constant.Constants; 
 | 
import com.moral.constant.ResponseCodeEnum; 
 | 
import com.moral.util.AESUtils; 
 | 
import com.moral.util.ConvertUtils; 
 | 
import com.moral.util.DateUtils; 
 | 
import com.moral.util.MD5Utils; 
 | 
import com.moral.util.RegexUtils; 
 | 
import com.moral.util.TokenUtils; 
 | 
import com.moral.util.WebUtils; 
 | 
  
 | 
/** 
 | 
 * <p> 
 | 
 * 用户表 服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2021-03-09 
 | 
 */ 
 | 
@Service 
 | 
@Slf4j 
 | 
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { 
 | 
  
 | 
    @Autowired 
 | 
    private UserMapper userMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private MenuMapper menuMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private UserGroupMapper userGroupMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private UserLogMapper userLogMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private OperationLogUtils operationLogUtils; 
 | 
  
 | 
    @Value("${AES.KEY}") 
 | 
    private String AESKey; 
 | 
  
 | 
    @Override 
 | 
    public UserBO selectUserInfo(Map<String, Object> parameters) { 
 | 
        return userMapper.selectUserInfo(parameters); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Map<String, Object> login(Map<String, Object> parameters) { 
 | 
        UserBO userBo = selectUserInfo(parameters); 
 | 
        Map<String, Object> result = new HashMap<>(); 
 | 
        //校验账户 
 | 
        if (userBo == null) { 
 | 
            result.put("code", ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验密码 
 | 
        String password = parameters.get("password").toString(); 
 | 
        //密码解密 
 | 
        password = AESUtils.decrypt(password, AESKey); 
 | 
        if (!MD5Utils.saltMD5Verify(password, userBo.getPassword())) { 
 | 
            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验是否删除 
 | 
        if (Constants.DELETE.equals(userBo.getIsDelete())) { 
 | 
            result.put("code", ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验是否过期 
 | 
        if (userBo.getExpireTime() != null && userBo.getExpireTime().getTime() < System.currentTimeMillis()) { 
 | 
            result.put("code", ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //封装用户信息 
 | 
        Map<String, Object> userInfo = new LinkedHashMap<>(); 
 | 
  
 | 
        //用户信息 
 | 
        userInfo.put("userId", userBo.getId()); 
 | 
        userInfo.put("account", userBo.getAccount()); 
 | 
        userInfo.put("userName", userBo.getUserName()); 
 | 
        userInfo.put("email", userBo.getEmail()); 
 | 
        userInfo.put("mobile", userBo.getMobile()); 
 | 
        userInfo.put("wechat", userBo.getWechat()); 
 | 
        userInfo.put("expireTime", DateUtils.dateToDateString(userBo.getExpireTime())); 
 | 
        userInfo.put("isAdmin", userBo.getIsAdmin()); 
 | 
  
 | 
        //用户组织信息 
 | 
        Organization organization = userBo.getOrganization(); 
 | 
        Map<String, Object> orgInfo = new LinkedHashMap<>(); 
 | 
        orgInfo.put("id", userBo.getOrganizationId()); 
 | 
        orgInfo.put("name", organization.getName()); 
 | 
        orgInfo.put("locationLevelCode", organization.getLocationLevelCode()); 
 | 
        orgInfo.put("expireTime", DateUtils.dateToDateString(organization.getExpireTime())); 
 | 
        userInfo.put("organization", orgInfo); 
 | 
  
 | 
        //用户组信息 
 | 
        Group group = userBo.getGroup(); 
 | 
        Map<String, Object> groupMap = new LinkedHashMap<>(); 
 | 
        userInfo.put("group", groupMap); 
 | 
        if (group != null) { 
 | 
            groupMap.put("id", group.getId()); 
 | 
            groupMap.put("groupName", group.getGroupName()); 
 | 
            userInfo.put("group", groupMap); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> map = new HashMap<>(); 
 | 
        map.put("userId", userBo.getId()); 
 | 
        //用户菜单信息 
 | 
        userInfo.putAll(getMenus(map)); 
 | 
        try { 
 | 
            //生成token,并存入redis 
 | 
            String token = TokenUtils.getToken(userBo.getId().toString(), userInfo); 
 | 
            result.put("token", token); 
 | 
        } catch (Exception e) { 
 | 
            log.error("token生成异常:" + e.getMessage()); 
 | 
            result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //日志 
 | 
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); 
 | 
        UserLog userLog = new UserLog(); 
 | 
        userLog.setType(Constants.LOGIN_OPERTATE_TYPE); 
 | 
        userLog.setIp(WebUtils.getIpAddr(request)); 
 | 
        userLog.setOperateId(userBo.getId()); 
 | 
        userLog.setOrganizationId(userBo.getOrganizationId()); 
 | 
        userLog.setContent("登陆了用户:" + userBo.getAccount()); 
 | 
        userLogMapper.insert(userLog); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Map<String, Object> getCurrentUserInfo() { 
 | 
        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo(); 
 | 
        return userInfo; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Map<String, Object> getMenus(Map<String, Object> parameters) { 
 | 
        List<Menu> allMenus; 
 | 
        if (parameters.containsKey("userId")) { 
 | 
            allMenus = menuMapper.selectUserMenu(Integer.parseInt(parameters.get("userId").toString())); 
 | 
        } else { 
 | 
            allMenus = menuMapper.selectOrganizationMenu(Integer.parseInt(parameters.get("orgId").toString())); 
 | 
            allMenus.removeIf(m -> "员工管理".equals(m.getName())); 
 | 
        } 
 | 
  
 | 
        Map<String, Object> resultMap = new LinkedHashMap<>(); 
 | 
        //第一级菜单 
 | 
        List<Menu> oneMenu = allMenus.stream() 
 | 
                .filter(o -> o.getParentId().equals(0)) 
 | 
                .sorted(Comparator.comparing(Menu::getOrder)) 
 | 
                .collect(Collectors.toList()); 
 | 
  
 | 
        List<Map<String, Object>> newList = new ArrayList<>(); 
 | 
        //遍历一级菜单 
 | 
        oneMenu.forEach(o -> { 
 | 
            Map<String, Object> menuMap = new LinkedHashMap<>(); 
 | 
            menuMap.put("id", o.getId()); 
 | 
            menuMap.put("label", o.getName()); 
 | 
            menuMap.put("url", o.getUrl()); 
 | 
            menuMap.put("icon", o.getIcon()); 
 | 
            menuMap.put("children", getMenusByRecursion(o, allMenus)); 
 | 
            newList.add(menuMap); 
 | 
        }); 
 | 
        resultMap.put("menus", newList); 
 | 
        return resultMap; 
 | 
    } 
 | 
  
 | 
    //获取用户层级菜单递归方法 
 | 
    private List<Map<String, Object>> getMenusByRecursion(Menu menu, List<Menu> menus) { 
 | 
        Menu newMenu = new Menu(); 
 | 
        newMenu.setParentId(menu.getId()); 
 | 
        //筛选出下一级菜单信息 
 | 
        List<Menu> nextLevelMenus = menus.stream() 
 | 
                .filter(o -> o.getParentId().equals(menu.getId())) 
 | 
                .sorted(Comparator.comparing(Menu::getOrder)) 
 | 
                .collect(Collectors.toList()); 
 | 
        List<Map<String, Object>> list = new ArrayList<>(); 
 | 
        if (nextLevelMenus.size() > 0) { 
 | 
            //遍历下一级菜单信息,并封装返回参数 
 | 
            nextLevelMenus.forEach(o -> { 
 | 
                Map<String, Object> menuMap = new LinkedHashMap<>(); 
 | 
                menuMap.put("id", o.getId()); 
 | 
                menuMap.put("label", o.getName()); 
 | 
                menuMap.put("url", o.getUrl()); 
 | 
                menuMap.put("icon", o.getIcon()); 
 | 
                //调用递归体 
 | 
                menuMap.put("children", getMenusByRecursion(o, menus)); 
 | 
                list.add(menuMap); 
 | 
            }); 
 | 
        } 
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public Map<String, Object> addUser(User user) { 
 | 
  
 | 
        Map<String, Object> result = new HashMap<>(); 
 | 
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo(); 
 | 
  
 | 
        QueryWrapper<User> queryWrapper = new QueryWrapper<>(); 
 | 
        queryWrapper.eq("account", user.getAccount()).eq("is_delete", Constants.NOT_DELETE); 
 | 
        //校验账户是否存在 
 | 
        if (user.selectCount(queryWrapper) > 0) { 
 | 
            result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验账户 
 | 
        if (!RegexUtils.checkAccount(user.getAccount())) { 
 | 
            result.put("code", ResponseCodeEnum.ACCOUNT_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.ACCOUNT_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
  
 | 
        //校验邮箱 
 | 
        if (!ObjectUtils.isEmpty(user.getEmail()) && !RegexUtils.checkEmail(user.getEmail())) { 
 | 
            result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验密码 
 | 
        String password = user.getPassword(); 
 | 
        //密码解密 
 | 
        password = AESUtils.decrypt(password, AESKey); 
 | 
        if (!RegexUtils.checkPassword(password)) { 
 | 
            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //校验手机号 
 | 
        if (!ObjectUtils.isEmpty(user.getMobile()) && !RegexUtils.checkMobile(user.getMobile())) { 
 | 
            result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //密码加密 
 | 
        user.setPassword(MD5Utils.saltMD5(password)); 
 | 
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization"); 
 | 
        Integer orgId = (Integer) orgInfo.get("id"); 
 | 
        user.setOrganizationId(orgId); 
 | 
        user.setIsAdmin(false); 
 | 
        //新增账户的过期时间 
 | 
        Date userExpireTime = user.getExpireTime(); 
 | 
        //当前组织的过期时间 
 | 
        Date orgExpireTime = DateUtils.getDate((String) orgInfo.get("expireTime"), DateUtils.yyyy_MM_dd_HH_mm_ss_EN); 
 | 
        if (userExpireTime != null) { 
 | 
            if (orgExpireTime != null && userExpireTime.getTime() > orgExpireTime.getTime()) { 
 | 
                user.setExpireTime(orgExpireTime); 
 | 
            } else { 
 | 
                user.setExpireTime(userExpireTime); 
 | 
            } 
 | 
        } else { 
 | 
            if (orgExpireTime != null) { 
 | 
                user.setExpireTime(orgExpireTime); 
 | 
            } 
 | 
        } 
 | 
        userMapper.insert(user); 
 | 
        //日志 
 | 
        String content = "添加了用户:" + user.getAccount(); 
 | 
        operationLogUtils.insertLog(content, Constants.INSERT_OPERATE_TYPE); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void deleteUser(Integer userId) { 
 | 
        User user = userMapper.selectById(userId); 
 | 
        //逻辑删除user 
 | 
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); 
 | 
        updateWrapper.eq("id", userId).set("is_delete", Constants.DELETE); 
 | 
        userMapper.update(null, updateWrapper); 
 | 
        //删除user_group 
 | 
        UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>(); 
 | 
        deleteWrapper.eq("user_id", userId); 
 | 
        userGroupMapper.delete(deleteWrapper); 
 | 
        //清楚redis 
 | 
        if (TokenUtils.hHasKey(userId.toString())) { 
 | 
            String token = TokenUtils.hget(userId.toString()).toString(); 
 | 
            TokenUtils.destoryToken(userId.toString(), token); 
 | 
        } 
 | 
        //日志 
 | 
        String content = "删除了用户:" + user.getAccount(); 
 | 
        operationLogUtils.insertLog(content, Constants.DELETE_OPERATE_TYPE); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public Map<String, Object> updateUser(User user) { 
 | 
        Map<String, Object> result = new HashMap<>(); 
 | 
        //更新的属性 
 | 
        Map<String, Object> update = JSONObject.parseObject(JSON.toJSONString(user), Map.class); 
 | 
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo(); 
 | 
        User beforeUser = userMapper.selectById(user.getId()); 
 | 
        Map<String, Object> before = JSONObject.parseObject(JSON.toJSONString(beforeUser), Map.class); 
 | 
        /*String account = beforeUser.getAccount(); 
 | 
        //account不可修改 
 | 
        user.setAccount(account);*/ 
 | 
        if (!ObjectUtils.isEmpty(user.getAccount())) { 
 | 
            QueryWrapper<User> queryWrapper = new QueryWrapper<>(); 
 | 
            queryWrapper.eq("is_delete", Constants.NOT_DELETE).eq("account", user.getAccount()); 
 | 
            if (userMapper.selectCount(queryWrapper) > 0) { 
 | 
                result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode()); 
 | 
                result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg()); 
 | 
                return result; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //邮箱校验 
 | 
        if (!ObjectUtils.isEmpty(user.getEmail()) && !RegexUtils.checkEmail(user.getEmail())) { 
 | 
            result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //密码校验 
 | 
        String password = user.getPassword(); 
 | 
        if (!ObjectUtils.isEmpty(password)) { 
 | 
            //密码解密 
 | 
            password = AESUtils.decrypt(password, AESKey); 
 | 
            if (!RegexUtils.checkPassword(password)) { 
 | 
                result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode()); 
 | 
                result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg()); 
 | 
                return result; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //正则校验手机号 
 | 
        if (!ObjectUtils.isEmpty(user.getMobile()) && !RegexUtils.checkMobile(user.getMobile())) { 
 | 
            result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode()); 
 | 
            result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg()); 
 | 
            return result; 
 | 
        } 
 | 
        //密码MD5加密 
 | 
        user.setPassword(MD5Utils.saltMD5(password)); 
 | 
        //组织信息 
 | 
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization"); 
 | 
        user.setOrganizationId((int) orgInfo.get("id")); 
 | 
        user.setIsAdmin(false); 
 | 
        //所修改账户的过期时间 
 | 
        Date userExpireTime = user.getExpireTime(); 
 | 
        //当前组织的过期时间 
 | 
        Date orgExpireTime = DateUtils.getDate((String) orgInfo.get("expireTime"), DateUtils.yyyy_MM_dd_HH_mm_ss_EN); 
 | 
        if (userExpireTime != null) { 
 | 
            if (orgExpireTime != null && userExpireTime.getTime() > orgExpireTime.getTime()) { 
 | 
                result.put("code", ResponseCodeEnum.EXPIRE_BEYOND_ADMIN.getCode()); 
 | 
                result.put("msg", ResponseCodeEnum.EXPIRE_BEYOND_ADMIN.getMsg()); 
 | 
                return result; 
 | 
            } 
 | 
        } 
 | 
        //更新redis 
 | 
        String userId = user.getId().toString(); 
 | 
        if (TokenUtils.hHasKey(userId)) { 
 | 
            String deleteToken = TokenUtils.hget(userId).toString(); 
 | 
            TokenUtils.destoryToken(userId, deleteToken); 
 | 
        } 
 | 
        userMapper.updateById(user); 
 | 
  
 | 
        //日志 
 | 
        String account = userMapper.selectById(userId).getAccount(); 
 | 
        StringBuilder content = new StringBuilder("修改了用户:" + account + "->"); 
 | 
        for (String key : update.keySet()) { 
 | 
            Object afterValue = update.get(key); 
 | 
            if (!key.equals("id") && afterValue != null) { 
 | 
                //修改前属性值 
 | 
                Object beforeValue = before.get(key); 
 | 
                content.append(key).append(":").append(beforeValue).append("=>").append(afterValue).append(";"); 
 | 
            } 
 | 
        } 
 | 
        operationLogUtils.insertLog(content.toString(), Constants.UPDATE_OPERATE_TYPE); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Page<User> selectUsers(Map<String, Object> parameters) { 
 | 
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo(); 
 | 
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization"); 
 | 
        QueryWrapper<User> queryWrapper = new QueryWrapper<>(); 
 | 
        queryWrapper.eq("organization_id", orgInfo.get("id")) 
 | 
                .eq("is_delete", Constants.NOT_DELETE) 
 | 
                .eq("is_admin", false); 
 | 
        Object order = parameters.get("order"); 
 | 
        Object orderType = parameters.get("orderType"); 
 | 
        Object account = parameters.get("account"); 
 | 
        Object userName = parameters.get("userName"); 
 | 
        Object mobile = parameters.get("mobile"); 
 | 
        Object email = parameters.get("mobile"); 
 | 
        Object wechat = parameters.get("wechat"); 
 | 
        //模糊查询参数 
 | 
        if (account != null) { 
 | 
            queryWrapper.like("account", account); 
 | 
        } 
 | 
        if (userName != null) { 
 | 
            queryWrapper.like("user_name", userName); 
 | 
        } 
 | 
        if (mobile != null) { 
 | 
            queryWrapper.like("mobile", mobile); 
 | 
        } 
 | 
        if (email != null) { 
 | 
            queryWrapper.like("email", email); 
 | 
        } 
 | 
        if (wechat != null) { 
 | 
            queryWrapper.like("wechat", wechat); 
 | 
        } 
 | 
  
 | 
        int page = Integer.parseInt(parameters.get("page").toString()); 
 | 
        int size = Integer.parseInt(parameters.get("size").toString()); 
 | 
        Page<User> pageData = new Page<>(page, size); 
 | 
        //排序参数,默认create_time降序 
 | 
        if (order != null && orderType != null) { 
 | 
            if (Constants.ORDER_ASC.equals(orderType)) { 
 | 
                queryWrapper.orderByAsc(ConvertUtils.toLine(order.toString())); 
 | 
            } else { 
 | 
                queryWrapper.orderByDesc(ConvertUtils.toLine(order.toString())); 
 | 
            } 
 | 
        } else { 
 | 
            queryWrapper.orderByDesc("create_time"); 
 | 
        } 
 | 
        userMapper.selectPage(pageData, queryWrapper); 
 | 
        return pageData; 
 | 
    } 
 | 
  
 | 
} 
 |