From b1e2462c74d8412b66951f447d9f09e5467f2c3e Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 04 Jun 2025 15:51:04 +0800 Subject: [PATCH] feat(mall): 添加我的团相关功能 --- src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java | 29 ++++ src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java | 21 +++ src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java | 22 +++ src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java | 17 ++ src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java | 17 ++ src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java | 20 ++ src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java | 17 ++ src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java | 45 ++++++ src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 12 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 175 ++++++++++++++++++++++++ 10 files changed, 373 insertions(+), 2 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java index ec0bb79..0099f5c 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java @@ -2,6 +2,10 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelAddDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInfoDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInsureDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelItemDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberPayment; import cc.mrbird.febs.mall.service.IApiMallAgentService; @@ -9,6 +13,9 @@ import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMemberWithdrawService; import cc.mrbird.febs.mall.vo.*; +import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelAddVo; +import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelInfoVo; +import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelItemVo; import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelVo; import cc.mrbird.febs.vip.service.IMallVipBenefitsService; import io.swagger.annotations.Api; @@ -30,6 +37,7 @@ @RestController @RequestMapping(value = "/api/member") @RequiredArgsConstructor +@Validated @Api(value = "ApiMallMemberController", tags = "365用户操作") public class ApiMallMemberController { @@ -66,6 +74,43 @@ return memberService.getLabelList(); } + @ApiOperation(value = "会员标识(我的团)", notes = "会员标识(我的团)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberLabelInfoVo.class) + }) + @PostMapping(value = "/getLabelListById") + public FebsResponse getLabelListById(@RequestBody @Validated ApiMemberLabelInfoDto dto) { + + return memberService.getLabelListById(dto); + } + + @ApiOperation(value = "我的团列表(我的团)", notes = "我的团列表(我的团)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberLabelItemVo.class) + }) + @PostMapping(value = "/getMemberLabelListById") + public FebsResponse getMemberLabelListById(@RequestBody @Validated ApiMemberLabelItemDto dto) { + + return memberService.getMemberLabelListById(dto); + } + + @ApiOperation(value = "添加团员(我的团)", notes = "添加团员(我的团)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberLabelAddVo.class) + }) + @PostMapping(value = "/addLabelMember") + public FebsResponse addLabelMember(@RequestBody @Validated ApiMemberLabelAddDto dto) { + + return memberService.addLabelMember(dto); + } + + @ApiOperation(value = "确认(我的团)", notes = "确认(我的团)") + @PostMapping(value = "/insureLabelMember") + public FebsResponse insureLabelMember(@RequestBody @Validated ApiMemberLabelInsureDto dto) { + + return memberService.insureLabelMember(dto); + } + @ApiOperation(value = "推出登录", notes = "推出登录") @PostMapping(value = "/logout") public FebsResponse logout() { diff --git a/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java new file mode 100644 index 0000000..eddb708 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.mall.dto.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiMemberLabelAddDto", description = "参数") +public class ApiMemberLabelAddDto { + + @NotNull(message = "会员标识不能为空") + @ApiModelProperty(value = "会员标识ID", example = "10") + private Integer labelId; + + @NotBlank(message = "电话不能为空") + @ApiModelProperty(value = "电话", example = "10") + private String phone; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java new file mode 100644 index 0000000..d8d9d7d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiMemberLabelInfoDto", description = "参数") +public class ApiMemberLabelInfoDto { + + + @NotNull(message = "会员标识不能为空") + @ApiModelProperty(value = "会员标识ID", example = "10") + private Integer id; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java new file mode 100644 index 0000000..85a1239 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java @@ -0,0 +1,21 @@ +package cc.mrbird.febs.mall.dto.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiMemberLabelInsureDto", description = "参数") +public class ApiMemberLabelInsureDto { + + @NotNull(message = "会员标识不能为空") + @ApiModelProperty(value = "labelId") + private Long labelId; + + @NotNull(message = "会员不能为空") + @ApiModelProperty(value = "memberId") + private Long memberId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java new file mode 100644 index 0000000..9fc3c36 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiMemberLabelItemDto", description = "参数") +public class ApiMemberLabelItemDto { + + @NotNull(message = "会员标识不能为空") + @ApiModelProperty(value = "会员标识ID", example = "10") + private Integer labelId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index 7c98ace..ba8189a 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java @@ -2,6 +2,10 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelAddDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInfoDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInsureDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelItemDto; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberPayment; import cc.mrbird.febs.mall.entity.MallShopApply; @@ -123,4 +127,12 @@ FebsResponse newGiftEvent(); FebsResponse getLabelList(); + + FebsResponse getLabelListById(ApiMemberLabelInfoDto dto); + + FebsResponse getMemberLabelListById(ApiMemberLabelItemDto dto); + + FebsResponse addLabelMember(ApiMemberLabelAddDto dto); + + FebsResponse insureLabelMember(ApiMemberLabelInsureDto dto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index b3c59e8..0268278 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -9,13 +9,16 @@ import cc.mrbird.febs.mall.conversion.MallShopApplyConversion; import cc.mrbird.febs.mall.conversion.MallStoreConversion; import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelAddDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInfoDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelInsureDto; +import cc.mrbird.febs.mall.dto.memberLevel.ApiMemberLabelItemDto; import cc.mrbird.febs.mall.dto.signActivity.ApiNewGiftSettingDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.mall.vo.*; -import cc.mrbird.febs.mall.vo.memberLevel.ApiLabelInfoVo; -import cc.mrbird.febs.mall.vo.memberLevel.ApiMemberLabelVo; +import cc.mrbird.febs.mall.vo.memberLevel.*; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.MD5; @@ -38,6 +41,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -1755,6 +1759,173 @@ return new FebsResponse().success().data(apiMemberLabelVos); } + @Override + public FebsResponse getLabelListById(ApiMemberLabelInfoDto dto) { + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + + List<ApiMemberLabelInfoVo> apiMemberLabelInfoVos = new ArrayList<>(); + + HappyMemberLabelRecord happyMemberLabelRecord = happyMemberLabelRecordMapper.selectOne( + Wrappers.lambdaQuery(HappyMemberLabelRecord.class) + .eq(HappyMemberLabelRecord::getMemberId, memberId) + .eq(HappyMemberLabelRecord::getLabelId, dto.getId()) + ); + if(ObjectUtil.isEmpty(happyMemberLabelRecord)){ + throw new FebsException("您没有该会员标签"); + } + HappyMemberLabel happyMemberLabel = happyMemberLabelMapper.selectById(dto.getId()); + if(ObjectUtil.isEmpty(happyMemberLabel)){ + throw new FebsException("您没有该会员标签"); + } + if(!ObjectUtil.equal(happyMemberLabel.getCode(),1)){ + throw new FebsException("没有查看权限"); + } + + List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList( + Wrappers.lambdaQuery(HappyMemberLabel.class) + .eq(HappyMemberLabel::getParentId, dto.getId()) + ); + if(CollUtil.isNotEmpty(happyMemberLabels)){ + for (HappyMemberLabel happyMemberLabelItem : happyMemberLabels) { + ApiMemberLabelInfoVo apiMemberLabelInfoVo = new ApiMemberLabelInfoVo(); + + apiMemberLabelInfoVo.setId(happyMemberLabelItem.getId()); + apiMemberLabelInfoVo.setName(happyMemberLabelItem.getName()); + apiMemberLabelInfoVos.add(apiMemberLabelInfoVo); + } + } + + return new FebsResponse().success().data(apiMemberLabelInfoVos); + } + + @Override + public FebsResponse getMemberLabelListById(ApiMemberLabelItemDto dto) { + + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + + List<ApiMemberLabelItemVo> apiMemberLabelItemVos = new ArrayList<>(); + + Integer labelId = dto.getLabelId(); + List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( + Wrappers.lambdaQuery(HappyMemberLabelRecord.class) + .eq(HappyMemberLabelRecord::getLabelId, labelId) + ); + if(CollUtil.isNotEmpty(happyMemberLabelRecords)){ + + //stream流操作happyMemberLabelRecords,返回memberId的set集合 + Set<Long> memberIdSet = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getMemberId).collect(Collectors.toSet()); + List<MallMember> mallMembers = this.baseMapper.selectList( + Wrappers.lambdaQuery(MallMember.class) + .select(MallMember::getId, MallMember::getName, MallMember::getPhone, MallMember::getAvatar) + .in(MallMember::getId, memberIdSet) + .eq(MallMember::getAccountStatus, MallMember.ACCOUNT_STATUS_ENABLE) + ); + for (MallMember mallMember : mallMembers){ + ApiMemberLabelItemVo apiMemberLabelItemVo = new ApiMemberLabelItemVo(); + apiMemberLabelItemVo.setName(mallMember.getName()); + apiMemberLabelItemVo.setAvatar(mallMember.getAvatar()); + apiMemberLabelItemVo.setPhone(mallMember.getPhone()); + apiMemberLabelItemVos.add(apiMemberLabelItemVo); + } + } + + return new FebsResponse().success().data(apiMemberLabelItemVos); + } + + @Override + public FebsResponse addLabelMember(ApiMemberLabelAddDto dto) { + + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + + ApiMemberLabelAddVo apiMemberLabelAddVo = new ApiMemberLabelAddVo(); + + Integer labelId = dto.getLabelId(); + String phone = dto.getPhone(); + + List<MallMember> mallMembers = this.baseMapper.selectList( + Wrappers.lambdaQuery(MallMember.class) + .eq(MallMember::getPhone, phone) + ); + if(CollUtil.isEmpty(mallMembers)){ + throw new FebsException("未查询到用户"); + } + + MallMember mallMember = mallMembers.get(0); + apiMemberLabelAddVo.setMemberId(mallMember.getId()); + apiMemberLabelAddVo.setName(mallMember.getName()); + apiMemberLabelAddVo.setPhone(mallMember.getPhone()); + + HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectById(labelId); + apiMemberLabelAddVo.setLabelId(happyMemberLevel.getId()); + apiMemberLabelAddVo.setLabelName(happyMemberLevel.getName()); + + //获取会员标签 + Integer integer = happyMemberLabelRecordMapper.selectCount( + Wrappers.lambdaQuery(HappyMemberLabelRecord.class) + .eq(HappyMemberLabelRecord::getMemberId, mallMember.getId()) + .eq(HappyMemberLabelRecord::getLabelId, labelId) + ); + if(integer > 0){ + apiMemberLabelAddVo.setState(0); + }else{ + apiMemberLabelAddVo.setState(1); + } + return new FebsResponse().success().data(apiMemberLabelAddVo); + } + + @Override + public FebsResponse insureLabelMember(ApiMemberLabelInsureDto dto) { + + // 获取当前登录用户的ID + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long labelId = dto.getLabelId(); + Long insureMemberId = dto.getMemberId(); + + HappyMemberLabel happyMemberLabel = happyMemberLabelMapper.selectById(labelId); + if(ObjectUtil.isEmpty(happyMemberLabel)){ + throw new FebsException("会员标签不存在"); + } + if(happyMemberLabel.getParentId() == 0){ + throw new FebsException("会员标签不存在"); + } + + Long parentId = happyMemberLabel.getParentId(); + HappyMemberLabel happyMemberLabelParent = happyMemberLabelMapper.selectById(parentId); + if(ObjectUtil.isEmpty(happyMemberLabelParent)){ + throw new FebsException("会员标签不存在"); + } + if(happyMemberLabelParent.getCode() != 1){ + throw new FebsException("权限不足"); + } + + List<HappyMemberLabelRecord> happyMemberLabelRecordsParent = happyMemberLabelRecordMapper.selectList( + Wrappers.lambdaQuery(HappyMemberLabelRecord.class) + .eq(HappyMemberLabelRecord::getMemberId, memberId) + .eq(HappyMemberLabelRecord::getLabelId, parentId) + ); + if(ObjectUtil.isEmpty(happyMemberLabelRecordsParent)){ + throw new FebsException("权限不足"); + } + + + List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( + Wrappers.lambdaQuery(HappyMemberLabelRecord.class) + .eq(HappyMemberLabelRecord::getMemberId, insureMemberId) + .eq(HappyMemberLabelRecord::getLabelId, labelId) + ); + if(CollUtil.isEmpty(happyMemberLabelRecords)){ + HappyMemberLabelRecord happyMemberLabelRecord = new HappyMemberLabelRecord(); + happyMemberLabelRecord.setMemberId(insureMemberId); + happyMemberLabelRecord.setLabelId(labelId); + happyMemberLabelRecordMapper.insert(happyMemberLabelRecord); + } + + return new FebsResponse().success().message("操作成功"); + } + // public static void main(String[] args) { // Long userld = 16425L; // String shopAccount = "爱和美医疗"; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java new file mode 100644 index 0000000..46c26cd --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.mall.vo.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiMemberLabelAddVo", description = "商城用户信息返回类") +public class ApiMemberLabelAddVo { + + @ApiModelProperty(value = "memberId") + private Long memberId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "电话") + private String phone; + + @ApiModelProperty(value = "labelId") + private Long labelId; + + @ApiModelProperty(value = "会员标识名称") + private String labelName; + + @ApiModelProperty(value = "是否允许确认 0-不允许 1-允许") + private Integer state; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java new file mode 100644 index 0000000..2cee4b2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.vo.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiMemberLabelInfoVo", description = "商城用户信息返回类") +public class ApiMemberLabelInfoVo { + + @ApiModelProperty(value = "labelId") + private Long id; + + @ApiModelProperty(value = "名称") + private String name; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java new file mode 100644 index 0000000..f5f0fd8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.mall.vo.memberLevel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiMemberLabelItemVo", description = "商城用户信息返回类") +public class ApiMemberLabelItemVo { + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "昵称") + private String name; + + @ApiModelProperty(value = "电话") + private String phone; + +} -- Gitblit v1.9.1