KKSU
2025-04-08 82d77490b23df66b120c16e2986d1ccaca1ca314
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -88,6 +88,7 @@
    private final MallStoreMapper mallStoreMapper;
    private final MallStoreItemMapper mallStoreItemMapper;
    private final MallStoreMemberMapper mallStoreMemberMapper;
    private final MallDoctorMapper mallDoctorMapper;
    @Value("${spring.profiles.active}")
@@ -1251,6 +1252,7 @@
        List<MallStoreMember> mallStoreMembers1 = mallStoreMemberMapper.selectList(
                new LambdaQueryWrapper<MallStoreMember>()
                        .eq(MallStoreMember::getMemberId, memberId)
                        .eq(MallStoreMember::getStoreItemId, mallStoreItem.getId())
                        .eq(MallStoreMember::getBindId, bindId)
        );
        if(CollUtil.isEmpty(mallStoreMembers1)){
@@ -1326,6 +1328,151 @@
        return new FebsResponse().success().data(data);
    }
    /**
     * 绑定医生接口的实现方法
     *
     * @param dto 包含绑定医生所需信息的数据传输对象
     * @return 返回操作结果的响应对象
     * @throws FebsException 如果绑定操作失败,抛出此异常
     */
    @Override
    public FebsResponse bindDoctor(ApiDoctorBindDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 从DTO中提取邀请ID和门店会员ID
        String inviteId = dto.getInviteId();
        Long storeMemberId = dto.getStoreMemberId();
        // 根据门店会员ID查询门店会员信息
        MallStoreMember mallStoreMember = mallStoreMemberMapper.selectById(storeMemberId);
        // 如果门店会员信息为空,抛出异常
        if(null == mallStoreMember){
            throw new FebsException("当前检测记录无法绑定!");
        }
        // 如果门店会员的会员ID与当前登录用户ID不匹配,抛出异常
        if(mallStoreMember.getMemberId() != memberId){
            throw new FebsException("当前检测记录无法绑定!");
        }
        // 根据邀请ID查询会员信息
        MallMember mallMember = this.baseMapper.selectInfoByInviteId(inviteId);
        // 如果会员的医生状态不是1,抛出异常
        if(1 != mallMember.getDoctorState()){
            throw new FebsException("无法绑定!");
        }
        // 查询与当前门店会员ID关联的医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(new LambdaQueryWrapper<MallDoctor>().eq(MallDoctor::getStoreMemberId, mallStoreMember.getId()));
        // 如果医生列表为空,创建新的医生对象并设置相关信息,然后插入数据库
        if(CollUtil.isEmpty(mallDoctors)){
            MallDoctor mallDoctor = new MallDoctor();
            mallDoctor.setMemberId(mallMember.getId());
            mallDoctor.setStoreMemberId(mallStoreMember.getId());
            mallDoctor.setBindMemberId(mallStoreMember.getMemberId());
            mallDoctor.setBindPhone(mallStoreMember.getPhone());
            mallDoctor.setBindName(mallStoreMember.getName());
            mallDoctor.setBindInfo(mallStoreMember.getAccount());
            mallDoctor.setBindAge(mallStoreMember.getAge());
            mallDoctorMapper.insert(mallDoctor);
        }
        // 返回操作成功的响应
        return new FebsResponse().success().message("操作成功");
    }
    /**
     * 获取医生列表接口的实现
     * 根据登录用户信息和查询条件,返回相应的医生列表
     *
     * @param dto 包含查询条件的数据传输对象
     * @return 返回包含医生列表的响应对象
     */
    @Override
    public FebsResponse doctorList(ApiDoctorListDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 初始化用于存储医生信息的集合
        ArrayList<ApiDoctorListVo> apiDoctorListVos = new ArrayList<>();
        // 创建查询条件包装器
        LambdaQueryWrapper<MallDoctor> objectQueryWrapper = new LambdaQueryWrapper<>();
        // 根据传入的手机号进行模糊查询
        if(StrUtil.isNotEmpty(dto.getPhone())){
            objectQueryWrapper.like(MallDoctor::getBindPhone,dto.getPhone());
        }
        // 根据会员ID进行精确查询
        objectQueryWrapper.eq(MallDoctor::getMemberId,memberId);
        // 按创建时间降序排序
        objectQueryWrapper.orderByDesc(MallDoctor::getCreatedTime);
        // 执行查询,获取医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(objectQueryWrapper);
        // 如果查询结果不为空,则遍历查询结果,封装医生信息
        if(CollUtil.isNotEmpty(mallDoctors)){
            for(MallDoctor mallDoctor : mallDoctors){
                ApiDoctorListVo apiDoctorListVo = new ApiDoctorListVo();
                apiDoctorListVo.setId(mallDoctor.getId());
                apiDoctorListVo.setStoreMemberId(mallDoctor.getStoreMemberId());
                apiDoctorListVo.setName(mallDoctor.getBindName());
                apiDoctorListVo.setPhone(mallDoctor.getBindPhone());
                apiDoctorListVo.setBindAge(mallDoctor.getBindAge());
                apiDoctorListVo.setBindInfo(mallDoctor.getBindInfo());
                apiDoctorListVo.setCreatedTime(mallDoctor.getCreatedTime());
                // 将封装好的医生信息添加到集合中
                apiDoctorListVos.add(apiDoctorListVo);
            }
        }
        // 返回包含医生列表的响应对象
        return new FebsResponse().success().data(apiDoctorListVos);
    }
    @Override
    public FebsResponse authList() {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        // 初始化用于存储医生信息的集合
        ArrayList<ApiDoctorListVo> apiDoctorListVos = new ArrayList<>();
        // 创建查询条件包装器
        LambdaQueryWrapper<MallDoctor> objectQueryWrapper = new LambdaQueryWrapper<>();
        // 根据会员ID进行精确查询
        objectQueryWrapper.eq(MallDoctor::getBindMemberId,memberId);
        // 按创建时间降序排序
        objectQueryWrapper.orderByDesc(MallDoctor::getCreatedTime);
        // 执行查询,获取医生列表
        List<MallDoctor> mallDoctors = mallDoctorMapper.selectList(objectQueryWrapper);
        // 如果查询结果不为空,则遍历查询结果,封装医生信息
        if(CollUtil.isNotEmpty(mallDoctors)){
            for(MallDoctor mallDoctor : mallDoctors){
                ApiDoctorListVo apiDoctorListVo = new ApiDoctorListVo();
                apiDoctorListVo.setId(mallDoctor.getId());
                apiDoctorListVo.setStoreMemberId(mallDoctor.getStoreMemberId());
                apiDoctorListVo.setName(mallDoctor.getBindName());
                apiDoctorListVo.setPhone(mallDoctor.getBindPhone());
                apiDoctorListVo.setBindAge(mallDoctor.getBindAge());
                apiDoctorListVo.setBindInfo(mallDoctor.getBindInfo());
                apiDoctorListVo.setCreatedTime(mallDoctor.getCreatedTime());
                // 将封装好的医生信息添加到集合中
                apiDoctorListVos.add(apiDoctorListVo);
            }
        }
        // 返回包含医生列表的响应对象
        return new FebsResponse().success().data(apiDoctorListVos);
    }
    @Override
    public FebsResponse authDel(ApiDoctorAuthDeleteDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallDoctor mallDoctor = mallDoctorMapper.selectById(dto.getId());
        if(memberId != mallDoctor.getBindMemberId()){
            throw new FebsException("当前授权无法删除!");
        }
        mallDoctorMapper.deleteById(dto.getId());
        return new FebsResponse().success().message("操作成功");
    }
    public static void main(String[] args) {
        Long userld = 16425L;
        String shopAccount = "爱和美医疗";