diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 6945dd91..8de253a6 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -82,5 +82,6 @@ public interface ErrorCodeConstants { ErrorCode CARD_ALREADY_BIND = new ErrorCode(1_004_099_008, "卡号已绑定"); ErrorCode ORDER_NOT_COMPLETE = new ErrorCode(1_004_099_009, "订单未完成"); ErrorCode NEED_ADD_USER = new ErrorCode(1_007_901_004, "请先添加人员"); + ErrorCode ADMIN_CARD_NOT_EXISTS = new ErrorCode(1_007_901_005, "管理员卡不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/AdminCardController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/AdminCardController.java new file mode 100644 index 00000000..0bce7616 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/AdminCardController.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.module.member.controller.admin.admincard; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardRespVO; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.admincard.AdminCardDO; +import cn.iocoder.yudao.module.member.service.admincard.AdminCardService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +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 javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 管理员卡") +@RestController +@RequestMapping("/member/admin-card") +@Validated +public class AdminCardController { + + @Resource + private AdminCardService adminCardService; + + @PostMapping("/create") + @Operation(summary = "创建管理员卡") + //@PreAuthorize("@ss.hasPermission('member:admin-card:create')") + public CommonResult createAdminCard(@Valid @RequestBody AdminCardSaveReqVO createReqVO) { + return success(adminCardService.createAdminCard(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新管理员卡") + //@PreAuthorize("@ss.hasPermission('member:admin-card:update')") + public CommonResult updateAdminCard(@Valid @RequestBody AdminCardSaveReqVO updateReqVO) { + adminCardService.updateAdminCard(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除管理员卡") + @Parameter(name = "id", description = "编号", required = true) + //@PreAuthorize("@ss.hasPermission('member:admin-card:delete')") + public CommonResult deleteAdminCard(@RequestParam("id") Long id) { + adminCardService.deleteAdminCard(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得管理员卡") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + //@PreAuthorize("@ss.hasPermission('member:admin-card:query')") + public CommonResult getAdminCard(@RequestParam("id") Long id) { + AdminCardDO adminCard = adminCardService.getAdminCard(id); + return success(BeanUtils.toBean(adminCard, AdminCardRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得管理员卡分页") + //@PreAuthorize("@ss.hasPermission('member:admin-card:query')") + public CommonResult> getAdminCardPage(@Valid AdminCardPageReqVO pageReqVO) { + PageResult pageResult = adminCardService.getAdminCardPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AdminCardRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得管理员卡不分页") + //@PreAuthorize("@ss.hasPermission('member:admin-card:query')") + public CommonResult> getAdminCardList() { + List pageResult = adminCardService.getAdminCardList(); + return success(BeanUtils.toBean(pageResult, AdminCardRespVO.class)); + } + + + @GetMapping("/export-excel") + @Operation(summary = "导出管理员卡 Excel") + @PreAuthorize("@ss.hasPermission('member:admin-card:export')") + @OperateLog(type = EXPORT) + public void exportAdminCardExcel(@Valid AdminCardPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = adminCardService.getAdminCardPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "管理员卡.xls", "数据", AdminCardRespVO.class, + BeanUtils.toBean(list, AdminCardRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardPageReqVO.java new file mode 100644 index 00000000..6f461b76 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardPageReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.admincard.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 管理员卡分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class AdminCardPageReqVO extends PageParam { + + @Schema(description = "手机号") + private String cardNo; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardRespVO.java new file mode 100644 index 00000000..ec55e99e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardRespVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.admincard.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 管理员卡 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AdminCardRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22679") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "手机号") + @ExcelProperty("手机号") + private String cardNo; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardSaveReqVO.java new file mode 100644 index 00000000..fe6cba6a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/admincard/vo/AdminCardSaveReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.member.controller.admin.admincard.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 管理员卡新增/修改 Request VO") +@Data +public class AdminCardSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22679") + private Long id; + + @Schema(description = "手机号") + private String cardNo; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java index 30e24a10..f2ebb33e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java @@ -156,7 +156,7 @@ public class CardController { @PutMapping("/rechargeByAdmin") @Operation(summary = "管理后台充值") //@PreAuthorize("@ss.hasPermission('member:card:update')") - public CommonResult rechargeByAdmin(RechargeVO vo) { + public CommonResult rechargeByAdmin(@RequestBody RechargeVO vo) { return success(cardService.rechargeByAdmin(vo)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/MemberGroupController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/MemberGroupController.java index 00bfc393..e6c44208 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/MemberGroupController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/MemberGroupController.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupRespV import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupSimpleRespVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUpdateReqVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupVO; +import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberUserVO; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO; import cn.iocoder.yudao.module.member.convert.group.MemberGroupConvert; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; @@ -103,7 +104,7 @@ public class MemberGroupController { @GetMapping("/getMember") @Operation(summary = "获取小组成员") //@PreAuthorize("@ss.hasPermission('member:group:create')") - public CommonResult> getMemberByGroupId(MemberGroupPageVO vo) { + public CommonResult> getMemberByGroupId(MemberGroupPageVO vo) { return success(groupService.getMemberByGroupId(vo)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberUserVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberUserVO.java new file mode 100644 index 00000000..747cfeaf --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/group/vo/MemberUserVO.java @@ -0,0 +1,155 @@ +package cn.iocoder.yudao.module.member.controller.admin.group.vo; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.enums.TerminalEnum; +import cn.iocoder.yudao.framework.ip.core.Area; +import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler; +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; +import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; +import cn.iocoder.yudao.module.system.enums.common.SexEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 会员用户 DO + * + * uk_mobile 索引:基于 {@link #mobile} 字段 + * + * @author 芋道源码 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MemberUserVO extends TenantBaseDO { + + // ========== 账号信息 ========== + + /** + * 用户ID + */ + private Long id; + /** + * 手机 + */ + private String mobile; + /** + * 加密后的密码 + * + * 因为目前使用 {@link BCryptPasswordEncoder} 加密器,所以无需自己处理 salt 盐 + */ + private String password; + /** + * 帐号状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 注册 IP + */ + private String registerIp; + /** + * 注册终端 + * 枚举 {@link TerminalEnum} + */ + private Integer registerTerminal; + /** + * 最后登录IP + */ + private String loginIp; + /** + * 最后登录时间 + */ + private LocalDateTime loginDate; + + // ========== 基础信息 ========== + + /** + * 用户昵称 + */ + private String nickname; + /** + * 用户头像 + */ + private String avatar; + + /** + * 真实名字 + */ + private String name; + /** + * 性别 + * + * 枚举 {@link SexEnum} + */ + private Integer sex; + /** + * 出生日期 + */ + private LocalDateTime birthday; + /** + * 所在地 + * + * 关联 {@link Area#getId()} 字段 + */ + private Integer areaId; + /** + * 用户备注 + */ + private String mark; + + // ========== 其它信息 ========== + + /** + * 积分 + */ + private Integer point; + // TODO 疯狂:增加一个 totalPoint;个人信息接口要返回 + + /** + * 会员标签列表,以逗号分隔 + */ + @TableField(typeHandler = LongListTypeHandler.class) + private List tagIds; + + /** + * 会员级别编号 + * + * 关联 {@link MemberLevelDO#getId()} 字段 + */ + private Long levelId; + /** + * 会员经验 + */ + private Integer experience; + /** + * 用户分组编号 + * + * 关联 {@link MemberGroupDO#getId()} 字段 + */ + private Long groupId; + /** + * 卡号 + */ + private String cardId; + /** + * 人脸 + */ + private Long faceId; + + private BigDecimal money; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/AppAdminCardController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/AppAdminCardController.java new file mode 100644 index 00000000..f22227fe --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/AppAdminCardController.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.app.admincard; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.app.admincard.vo.AppAdminCardRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.admincard.AdminCardDO; +import cn.iocoder.yudao.module.member.service.admincard.AdminCardService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +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.RestController; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户 APP - 管理员卡") +@RestController +@RequestMapping("/member/admin-card") +@Validated +public class AppAdminCardController { + + @Resource + private AdminCardService adminCardService; + + @GetMapping("/list") + @Operation(summary = "获得管理员卡不分页") + //@PreAuthorize("@ss.hasPermission('member:admin-card:query')") + public CommonResult> getAdminCardList() { + List pageResult = adminCardService.getAdminCardList(); + return success(BeanUtils.toBean(pageResult, AppAdminCardRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/vo/AppAdminCardRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/vo/AppAdminCardRespVO.java new file mode 100644 index 00000000..730b3d6f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/admincard/vo/AppAdminCardRespVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.app.admincard.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 管理员卡 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppAdminCardRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22679") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "手机号") + @ExcelProperty("手机号") + private String cardNo; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/admincard/AdminCardDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/admincard/AdminCardDO.java new file mode 100644 index 00000000..613bab79 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/admincard/AdminCardDO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.admincard; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 管理员卡 DO + * + * @author 开发账号 + */ +@TableName("member_admin_card") +@KeySequence("member_admin_card_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AdminCardDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 手机号 + */ + private String cardNo; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/admincard/AdminCardMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/admincard/AdminCardMapper.java new file mode 100644 index 00000000..8559c068 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/admincard/AdminCardMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.dal.mysql.admincard; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.admincard.AdminCardDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.*; + +/** + * 管理员卡 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface AdminCardMapper extends BaseMapperX { + + default PageResult selectPage(AdminCardPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(AdminCardDO::getCardNo, reqVO.getCardNo()) + .betweenIfPresent(AdminCardDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(AdminCardDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java index d9c29d1b..da350e6e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.member.dal.mysql.user; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -103,7 +104,7 @@ public interface MemberUserMapper extends BaseMapperX { // 分页查询 return selectPage(listVO, new LambdaQueryWrapperX() .likeIfPresent(MemberUserDO::getNickname, listVO.getName()) - .notIn(MemberUserDO::getId, listVO.getIds()) + .notIn(CollectionUtil.isNotEmpty(listVO.getIds()) ,MemberUserDO::getId, listVO.getIds()) .orderByDesc(MemberUserDO::getId)); } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardService.java new file mode 100644 index 00000000..017bb135 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.service.admincard; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.admincard.AdminCardDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 管理员卡 Service 接口 + * + * @author 开发账号 + */ +public interface AdminCardService { + + /** + * 创建管理员卡 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createAdminCard(@Valid AdminCardSaveReqVO createReqVO); + + /** + * 更新管理员卡 + * + * @param updateReqVO 更新信息 + */ + void updateAdminCard(@Valid AdminCardSaveReqVO updateReqVO); + + /** + * 删除管理员卡 + * + * @param id 编号 + */ + void deleteAdminCard(Long id); + + /** + * 获得管理员卡 + * + * @param id 编号 + * @return 管理员卡 + */ + AdminCardDO getAdminCard(Long id); + + /** + * 获得管理员卡分页 + * + * @param pageReqVO 分页查询 + * @return 管理员卡分页 + */ + PageResult getAdminCardPage(AdminCardPageReqVO pageReqVO); + + List getAdminCardList(); + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardServiceImpl.java new file mode 100644 index 00000000..56596032 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/admincard/AdminCardServiceImpl.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.member.service.admincard; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.admincard.vo.AdminCardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.admincard.AdminCardDO; +import cn.iocoder.yudao.module.member.dal.mysql.admincard.AdminCardMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ADMIN_CARD_NOT_EXISTS; + +/** + * 管理员卡 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class AdminCardServiceImpl implements AdminCardService { + + @Resource + private AdminCardMapper adminCardMapper; + + @Override + public Long createAdminCard(AdminCardSaveReqVO createReqVO) { + // 插入 + AdminCardDO adminCard = BeanUtils.toBean(createReqVO, AdminCardDO.class); + adminCardMapper.insert(adminCard); + // 返回 + return adminCard.getId(); + } + + @Override + public void updateAdminCard(AdminCardSaveReqVO updateReqVO) { + // 校验存在 + validateAdminCardExists(updateReqVO.getId()); + // 更新 + AdminCardDO updateObj = BeanUtils.toBean(updateReqVO, AdminCardDO.class); + adminCardMapper.updateById(updateObj); + } + + @Override + public void deleteAdminCard(Long id) { + // 校验存在 + validateAdminCardExists(id); + // 删除 + adminCardMapper.deleteById(id); + } + + private void validateAdminCardExists(Long id) { + if (adminCardMapper.selectById(id) == null) { + throw exception(ADMIN_CARD_NOT_EXISTS); + } + } + + @Override + public AdminCardDO getAdminCard(Long id) { + return adminCardMapper.selectById(id); + } + + @Override + public PageResult getAdminCardPage(AdminCardPageReqVO pageReqVO) { + return adminCardMapper.selectPage(pageReqVO); + } + + @Override + public List getAdminCardList() { + return adminCardMapper.selectList(); + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java index 61759af0..4156fb92 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageR import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUpdateReqVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupVO; +import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberUserVO; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; @@ -98,7 +99,7 @@ public interface MemberGroupService { * @param vo 小组ID * @return 所有会员 */ - PageResult getMemberByGroupId(MemberGroupPageVO vo); + PageResult getMemberByGroupId(MemberGroupPageVO vo); /** * 删除会员 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java index 4d6bd088..592425c1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/group/MemberGroupServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.service.group; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -8,16 +9,20 @@ import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageR import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupPageVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupUpdateReqVO; import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberGroupVO; +import cn.iocoder.yudao.module.member.controller.admin.group.vo.MemberUserVO; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserListVO; import cn.iocoder.yudao.module.member.convert.group.MemberGroupConvert; import cn.iocoder.yudao.module.member.dal.dataobject.group.MemberGroupDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.group.MemberGroupMapper; +import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -39,6 +44,8 @@ public class MemberGroupServiceImpl implements MemberGroupService { @Resource private MemberUserService memberUserService; + @Resource + private CardService cardService; @Override public Long createGroup(MemberGroupCreateReqVO createReqVO) { @@ -110,11 +117,20 @@ public class MemberGroupServiceImpl implements MemberGroupService { } @Override - public PageResult getMemberByGroupId(MemberGroupPageVO vo) { + public PageResult getMemberByGroupId(MemberGroupPageVO vo) { vo.setLimitOne((vo.getPageNo()-1)*vo.getPageSize()); - PageResult result = new PageResult<>(); - result.setList(memberGroupMapper.getMemberByGroupId(vo)); + PageResult result = new PageResult<>(); + List list = memberGroupMapper.getMemberByGroupId(vo); + ArrayList userList = new ArrayList<>(); + for (MemberUserDO memberUserDO:list){ + BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); + MemberUserVO memberUserVO = new MemberUserVO(); + BeanUtil.copyProperties(memberUserDO,memberUserVO); + memberUserVO.setMoney(money); + userList.add(memberUserVO); + } + result.setList(userList); result.setTotal(memberGroupMapper.memberCount(vo)); return result; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/group/MemberGroupMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/group/MemberGroupMapper.xml index 69ebc635..1cc858f7 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/group/MemberGroupMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/group/MemberGroupMapper.xml @@ -50,7 +50,7 @@ \ No newline at end of file