新增会员管理模块

This commit is contained in:
阿沐 2024-04-01 09:51:15 +08:00
parent f75346e9cc
commit 18307a2312
9 changed files with 404 additions and 0 deletions

View File

@ -0,0 +1,25 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>net.maku</groupId>
<artifactId>maku-boot-module</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maku-module-member</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>net.maku</groupId>
<artifactId>maku-framework</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.6.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,76 @@
package net.maku.member.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import net.maku.framework.common.utils.PageResult;
import net.maku.framework.common.utils.Result;
import net.maku.member.convert.MemberUserConvert;
import net.maku.member.entity.MemberUserEntity;
import net.maku.member.query.MemberUserQuery;
import net.maku.member.service.MemberUserService;
import net.maku.member.vo.MemberUserVO;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
@RestController
@RequestMapping("member/user")
@Tag(name = "会员管理")
@AllArgsConstructor
public class MemberUserController {
private final MemberUserService memberUserService;
@GetMapping("page")
@Operation(summary = "分页")
@PreAuthorize("hasAuthority('member:user:all')")
public Result<PageResult<MemberUserVO>> page(@ParameterObject @Valid MemberUserQuery query) {
PageResult<MemberUserVO> page = memberUserService.page(query);
return Result.ok(page);
}
@GetMapping("{id}")
@Operation(summary = "信息")
@PreAuthorize("hasAuthority('member:user:all')")
public Result<MemberUserVO> get(@PathVariable("id") Long id) {
MemberUserEntity entity = memberUserService.getById(id);
return Result.ok(MemberUserConvert.INSTANCE.convert(entity));
}
@PostMapping
@Operation(summary = "保存")
@PreAuthorize("hasAuthority('member:user:all')")
public Result<String> save(@RequestBody MemberUserVO vo) {
memberUserService.save(vo);
return Result.ok();
}
@PutMapping
@Operation(summary = "修改")
@PreAuthorize("hasAuthority('member:user:all')")
public Result<String> update(@RequestBody @Valid MemberUserVO vo) {
memberUserService.update(vo);
return Result.ok();
}
@DeleteMapping
@Operation(summary = "删除")
@PreAuthorize("hasAuthority('member:user:all')")
public Result<String> delete(@RequestBody List<Long> idList) {
memberUserService.delete(idList);
return Result.ok();
}
}

View File

@ -0,0 +1,25 @@
package net.maku.member.convert;
import net.maku.member.entity.MemberUserEntity;
import net.maku.member.vo.MemberUserVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
@Mapper
public interface MemberUserConvert {
MemberUserConvert INSTANCE = Mappers.getMapper(MemberUserConvert.class);
MemberUserEntity convert(MemberUserVO vo);
MemberUserVO convert(MemberUserEntity entity);
List<MemberUserVO> convertList(List<MemberUserEntity> list);
}

View File

@ -0,0 +1,15 @@
package net.maku.member.dao;
import net.maku.framework.mybatis.dao.BaseDao;
import net.maku.member.entity.MemberUserEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
@Mapper
public interface MemberUserDao extends BaseDao<MemberUserEntity> {
}

View File

@ -0,0 +1,89 @@
package net.maku.member.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
@Data
@TableName("member_user")
public class MemberUserEntity {
/**
* id
*/
@TableId
private Long id;
/**
* 昵称
*/
private String nickName;
/**
* 手机号
*/
private String mobile;
/**
* 头像
*/
private String avatar;
/**
* 出生日期
*/
private LocalDateTime birthday;
/**
* 性别
*/
private Integer gender;
/**
* 第三方平台唯一标识
*/
private String openid;
/**
* 最后登录IP
*/
private String lastLoginIp;
/**
* 最后登录时间
*/
private LocalDateTime lastLoginTime;
/**
* 备注
*/
private String remark;
/**
* 状态
*/
private Integer status;
/**
* 版本号
*/
private Integer version;
/**
* 删除标识
*/
private Integer deleted;
/**
* 创建时间
*/
private LocalDateTime createTime;
}

View File

@ -0,0 +1,29 @@
package net.maku.member.query;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.maku.framework.common.query.Query;
/**
* 会员管理查询
*
* @author 阿沐 babamu@126.com
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(description = "会员管理查询")
public class MemberUserQuery extends Query {
@Schema(description = "昵称")
private String nickName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "性别")
private Integer gender;
@Schema(description = "状态")
private Integer status;
}

View File

@ -0,0 +1,25 @@
package net.maku.member.service;
import net.maku.framework.common.utils.PageResult;
import net.maku.framework.mybatis.service.BaseService;
import net.maku.member.entity.MemberUserEntity;
import net.maku.member.query.MemberUserQuery;
import net.maku.member.vo.MemberUserVO;
import java.util.List;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
public interface MemberUserService extends BaseService<MemberUserEntity> {
PageResult<MemberUserVO> page(MemberUserQuery query);
void save(MemberUserVO vo);
void update(MemberUserVO vo);
void delete(List<Long> idList);
}

View File

@ -0,0 +1,63 @@
package net.maku.member.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import net.maku.framework.common.utils.PageResult;
import net.maku.framework.mybatis.service.impl.BaseServiceImpl;
import net.maku.member.convert.MemberUserConvert;
import net.maku.member.entity.MemberUserEntity;
import net.maku.member.query.MemberUserQuery;
import net.maku.member.vo.MemberUserVO;
import net.maku.member.dao.MemberUserDao;
import net.maku.member.service.MemberUserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
* @since 1.0.0 2024-03-11
*/
@Service
@AllArgsConstructor
public class MemberUserServiceImpl extends BaseServiceImpl<MemberUserDao, MemberUserEntity> implements MemberUserService {
@Override
public PageResult<MemberUserVO> page(MemberUserQuery query) {
IPage<MemberUserEntity> page = baseMapper.selectPage(getPage(query), getWrapper(query));
return new PageResult<>(MemberUserConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
}
private LambdaQueryWrapper<MemberUserEntity> getWrapper(MemberUserQuery query){
LambdaQueryWrapper<MemberUserEntity> wrapper = Wrappers.lambdaQuery();
return wrapper;
}
@Override
public void save(MemberUserVO vo) {
MemberUserEntity entity = MemberUserConvert.INSTANCE.convert(vo);
baseMapper.insert(entity);
}
@Override
public void update(MemberUserVO vo) {
MemberUserEntity entity = MemberUserConvert.INSTANCE.convert(vo);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(List<Long> idList) {
removeByIds(idList);
}
}

View File

@ -0,0 +1,57 @@
package net.maku.member.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.maku.framework.common.utils.DateUtils;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 会员管理
*
* @author 阿沐 babamu@126.com
*/
@Data
@Schema(description = "会员管理")
public class MemberUserVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "id")
private Long id;
@Schema(description = "昵称")
private String nickName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "头像")
private String avatar;
@Schema(description = "出生日期")
@JsonFormat(pattern = DateUtils.DATE_PATTERN)
private LocalDateTime birthday;
@Schema(description = "性别")
private Integer gender;
@Schema(description = "最后登录IP")
private String lastLoginIp;
@Schema(description = "最后登录时间")
@JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
private LocalDateTime lastLoginTime;
@Schema(description = "备注")
private String remark;
@Schema(description = "状态")
private Integer status;
@Schema(description = "创建时间")
@JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
private LocalDateTime createTime;
}