diff --git a/maku-boot-module/maku-module-member/pom.xml b/maku-boot-module/maku-module-member/pom.xml
new file mode 100644
index 0000000..39ae709
--- /dev/null
+++ b/maku-boot-module/maku-module-member/pom.xml
@@ -0,0 +1,25 @@
+
+
+ net.maku
+ maku-boot-module
+ ${revision}
+
+ 4.0.0
+ maku-module-member
+ jar
+
+
+
+ net.maku
+ maku-framework
+ ${revision}
+
+
+ com.github.binarywang
+ weixin-java-miniapp
+ 4.6.0
+
+
+
+
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/controller/MemberUserController.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/controller/MemberUserController.java
new file mode 100644
index 0000000..95d8c7d
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/controller/MemberUserController.java
@@ -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> page(@ParameterObject @Valid MemberUserQuery query) {
+ PageResult page = memberUserService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('member:user:all')")
+ public Result 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 save(@RequestBody MemberUserVO vo) {
+ memberUserService.save(vo);
+
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('member:user:all')")
+ public Result update(@RequestBody @Valid MemberUserVO vo) {
+ memberUserService.update(vo);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('member:user:all')")
+ public Result delete(@RequestBody List idList) {
+ memberUserService.delete(idList);
+
+ return Result.ok();
+ }
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/convert/MemberUserConvert.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/convert/MemberUserConvert.java
new file mode 100644
index 0000000..7ec3072
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/convert/MemberUserConvert.java
@@ -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 convertList(List list);
+
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/dao/MemberUserDao.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/dao/MemberUserDao.java
new file mode 100644
index 0000000..eaa28a5
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/dao/MemberUserDao.java
@@ -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 {
+
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/entity/MemberUserEntity.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/entity/MemberUserEntity.java
new file mode 100644
index 0000000..a733db3
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/entity/MemberUserEntity.java
@@ -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;
+
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/query/MemberUserQuery.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/query/MemberUserQuery.java
new file mode 100644
index 0000000..9ffbd7a
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/query/MemberUserQuery.java
@@ -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;
+
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/MemberUserService.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/MemberUserService.java
new file mode 100644
index 0000000..e4fb77f
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/MemberUserService.java
@@ -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 {
+
+ PageResult page(MemberUserQuery query);
+
+ void save(MemberUserVO vo);
+
+ void update(MemberUserVO vo);
+
+ void delete(List idList);
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/impl/MemberUserServiceImpl.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/impl/MemberUserServiceImpl.java
new file mode 100644
index 0000000..5a116b7
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/service/impl/MemberUserServiceImpl.java
@@ -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 implements MemberUserService {
+
+ @Override
+ public PageResult page(MemberUserQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(MemberUserConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ private LambdaQueryWrapper getWrapper(MemberUserQuery query){
+ LambdaQueryWrapper 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 idList) {
+ removeByIds(idList);
+ }
+
+}
\ No newline at end of file
diff --git a/maku-boot-module/maku-module-member/src/main/java/net/maku/member/vo/MemberUserVO.java b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/vo/MemberUserVO.java
new file mode 100644
index 0000000..346994f
--- /dev/null
+++ b/maku-boot-module/maku-module-member/src/main/java/net/maku/member/vo/MemberUserVO.java
@@ -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;
+
+}
\ No newline at end of file