From 992d987c015da4c8974f3f5012828162bef65b7b Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Mon, 22 Aug 2022 17:04:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/user/UserController.java | 57 +++++++++ .../mdd/admin/service/user/IUserService.java | 26 ++++ .../service/user/impl/UserServiceImpl.java | 118 ++++++++++++++++++ .../java/com/mdd/admin/vo/user/UserVo.java | 28 +++++ .../java/com/mdd/common/entity/user/User.java | 35 ++++++ .../mdd/common/mapper/user/UserMapper.java | 12 ++ 6 files changed, 276 insertions(+) create mode 100644 server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java create mode 100644 server/like-admin/src/main/java/com/mdd/admin/vo/user/UserVo.java create mode 100644 server/like-common/src/main/java/com/mdd/common/entity/user/User.java create mode 100644 server/like-common/src/main/java/com/mdd/common/mapper/user/UserMapper.java diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java new file mode 100644 index 00000000..eda80f72 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/user/UserController.java @@ -0,0 +1,57 @@ +package com.mdd.admin.controller.user; + +import com.mdd.admin.service.user.IUserService; +import com.mdd.admin.validate.common.PageParam; +import com.mdd.admin.vo.user.UserVo; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.user.User; +import com.mdd.common.validator.annotation.IDMust; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * 用户管理 + */ +@RestController +@RequestMapping("api/user") +public class UserController { + + @Resource + IUserService iUserService; + + /** + * 用户列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/list") + public Object list(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iUserService.list(pageParam, params); + return AjaxResult.success(list); + } + + /** + * 用户详情 + * + * @author fzr + * @param id 主键 + * @return Object + */ + @GetMapping("/detail") + public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { + UserVo vo = iUserService.detail(id); + return AjaxResult.success(vo); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java b/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java new file mode 100644 index 00000000..c10a0f07 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/user/IUserService.java @@ -0,0 +1,26 @@ +package com.mdd.admin.service.user; + +import com.mdd.admin.validate.common.PageParam; +import com.mdd.admin.vo.user.UserVo; +import com.mdd.common.core.PageResult; + +import java.util.Map; + +/** + * 用户服务接口类 + */ +public interface IUserService { + + /** + * 用户列表 + * + * @author fzr + * @param pageParam (分页参数) + * @param params (搜索参数) + * @return PageResult + */ + PageResult list(PageParam pageParam, Map params); + + UserVo detail(Integer id); + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java new file mode 100644 index 00000000..d05f6e0b --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/user/impl/UserServiceImpl.java @@ -0,0 +1,118 @@ +package com.mdd.admin.service.user.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mdd.admin.service.user.IUserService; +import com.mdd.admin.validate.common.PageParam; +import com.mdd.admin.vo.article.ArticleListVo; +import com.mdd.admin.vo.user.UserVo; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.user.User; +import com.mdd.common.mapper.user.UserMapper; +import com.mdd.common.utils.StringUtil; +import com.mdd.common.utils.TimeUtil; +import com.mdd.common.utils.UrlUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * 用户服务实现类 + */ +@Service +public class UserServiceImpl implements IUserService { + + @Resource + UserMapper userMapper; + + @Override + public PageResult list(PageParam pageParam, Map params) { + Integer pageNo = pageParam.getPageNo(); + Integer pageSize = pageParam.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + queryWrapper.select(User.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time") && + !info.getColumn().equals("update_time") && + !info.getColumn().equals("password") && + !info.getColumn().equals("salt") + ); + + if (StringUtil.isNotEmpty(params.get("keyword"))) { + String keyword = params.get("keyword"); + queryWrapper.nested(wq->wq + .like("sn", keyword).or() + .like("nickname", keyword).or() + .like("mobile", keyword)); + } + + userMapper.setSearch(queryWrapper, params, new String[]{ + "=:channel:int", + "datetime:startTime-endTime@t.create_time:str" + }); + + IPage iPage = userMapper.selectPage( new Page<>(pageNo, pageSize), queryWrapper); + + List list = new LinkedList<>(); + for (User user : iPage.getRecords()) { + UserVo vo = new UserVo(); + BeanUtils.copyProperties(user, vo); + + vo.setAvatar(UrlUtil.toAbsoluteUrl(user.getAvatar())); + vo.setLastLoginTime(TimeUtil.timestampToDate(user.getLastLoginTime())); + vo.setCreateTime(TimeUtil.timestampToDate(user.getCreateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 用户详情 + * + * @author fzr + * @param id 主键 + * @return UserVo + */ + @Override + public UserVo detail(Integer id) { + Assert.notNull( + userMapper.selectOne(new QueryWrapper() + .select("id") + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1") + ), "数据不存在!"); + + + User user = userMapper.selectOne(new QueryWrapper() + .select(User.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time") && + !info.getColumn().equals("update_time") && + !info.getColumn().equals("password") && + !info.getColumn().equals("salt") + ) + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + UserVo vo = new UserVo(); + BeanUtils.copyProperties(user, vo); + + vo.setAvatar(UrlUtil.toAbsoluteUrl(user.getAvatar())); + vo.setLastLoginTime(TimeUtil.timestampToDate(user.getLastLoginTime())); + vo.setCreateTime(TimeUtil.timestampToDate(user.getCreateTime())); + return vo; + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/user/UserVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/user/UserVo.java new file mode 100644 index 00000000..110703e0 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/user/UserVo.java @@ -0,0 +1,28 @@ +package com.mdd.admin.vo.user; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户Vo + */ +@Data +public class UserVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String sn; + private String avatar; + private String realName; + private String nickname; + private String username; + private String mobile; + private String sex; + private String channel; + private String lastLoginIp; + private String lastLoginTime; + private String createTime; + +} diff --git a/server/like-common/src/main/java/com/mdd/common/entity/user/User.java b/server/like-common/src/main/java/com/mdd/common/entity/user/User.java new file mode 100644 index 00000000..52ed3fac --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/entity/user/User.java @@ -0,0 +1,35 @@ +package com.mdd.common.entity.user; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户实体 + */ +@Data +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; // 主键 + private String sn; // 编号 + private String avatar; // 用户头像 + private String realName; // 真实姓名 + private String nickname; // 用户昵称 + private String username; // 用户账号 + private String password; // 用户密码 + private String mobile; // 用户电话 + private String salt; // 加密盐巴 + private Integer sex; // 用户性别: [1=男, 2=女] + private Integer is_delete; // 是否删除: [0=否, 1=是] + private String lastLoginIp; // 最后登录IP + private Long lastLoginTime; // 最后登录时间 + private Long createTime; // 创建时间 + private Long updateTime; // 更新时间 + private Long deleteTime; // 删除时间 + +} diff --git a/server/like-common/src/main/java/com/mdd/common/mapper/user/UserMapper.java b/server/like-common/src/main/java/com/mdd/common/mapper/user/UserMapper.java new file mode 100644 index 00000000..aae977d3 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/mapper/user/UserMapper.java @@ -0,0 +1,12 @@ +package com.mdd.common.mapper.user; + +import com.mdd.common.core.basics.IBaseMapper; +import com.mdd.common.entity.user.User; +import org.apache.ibatis.annotations.Mapper; + +/** + * 用户Mapper + */ +@Mapper +public interface UserMapper extends IBaseMapper { +}