Administrator
2 days ago b1e2462c74d8412b66951f447d9f09e5467f2c3e
feat(mall): 添加我的团相关功能

- 新增会员标识获取接口
- 新增我的团列表获取接口
- 新增添加团员接口
- 新增确认团员接口
3 files modified
7 files added
375 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/member/ApiMallMemberController.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 175 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java 20 ●●●●● patch | view | raw | blame | history
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() {
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelAddDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInfoDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelInsureDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/memberLevel/ApiMemberLabelItemDto.java
New file
@@ -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;
}
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);
}
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 = "爱和美医疗";
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelAddVo.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelInfoVo.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/vo/memberLevel/ApiMemberLabelItemVo.java
New file
@@ -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;
}