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