Administrator
7 days ago ed5a6de6023e73e7f5b5af86a94aa4f1e43a3fc4
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}")
@@ -1096,10 +1097,12 @@
        MallMember member = this.baseMapper.selectById(loginUser.getId());
        MallMember mallMember = new MallMember();
        mallMember.setId(member.getId());
        mallMember.setLastLoginTime(new Date());
        this.baseMapper.updateById(mallMember);
//        MallMember mallMember = new MallMember();
//        mallMember.setId(member.getId());
//        mallMember.setLastLoginTime(new Date());
//        this.baseMapper.updateById(mallMember);
        this.baseMapper.updateLastLoginTime(member.getId(),new Date());
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode());
        if (dic == null || StrUtil.isBlank(dic.getValue())) {
@@ -1176,9 +1179,14 @@
    @Override
    public FebsResponse storeItemList(MallStoreItemDto mallStoreItemDto) {
        QueryWrapper<MallStoreItem> mallStoreQueryWrapper = new QueryWrapper<>();
        mallStoreQueryWrapper.like("store_id",mallStoreItemDto.getStoreId());
        List<MallStoreItem> mallStores = mallStoreItemMapper.selectList(mallStoreQueryWrapper);
//        QueryWrapper<MallStoreItem> mallStoreQueryWrapper = new QueryWrapper<>();
//        mallStoreQueryWrapper.like("store_id",mallStoreItemDto.getStoreId());
//        List<MallStoreItem> mallStores = mallStoreItemMapper.selectList(mallStoreQueryWrapper);
        List<MallStoreItem> mallStores = mallStoreItemMapper.selectList(
                new LambdaQueryWrapper<MallStoreItem>()
                        .eq(MallStoreItem::getStoreId, mallStoreItemDto.getStoreId())
        );
        return new FebsResponse().success().data(mallStores);
    }
@@ -1187,11 +1195,17 @@
        Long memberId = LoginUserUtil.getLoginUser().getId();
        Long storeItemId = bindStoreMemberDto.getStoreItemId();
        QueryWrapper<MallStoreMember> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("member_id",memberId);
        List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(objectQueryWrapper);
//        QueryWrapper<MallStoreMember> objectQueryWrapper = new QueryWrapper<>();
//        objectQueryWrapper.eq("member_id",memberId);
//        List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(objectQueryWrapper);
        List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(
                new LambdaQueryWrapper<MallStoreMember>()
                        .eq(MallStoreMember::getMemberId, memberId)
                        .eq(MallStoreMember::getStoreItemId, bindStoreMemberDto.getStoreItemId())
        );
        if(CollUtil.isNotEmpty(mallStoreMembers)){
            mallStoreMemberMapper.delete(objectQueryWrapper);
            return new FebsResponse().fail().message("您已经绑定过了");
        }
        MallMember mallMember = this.baseMapper.selectById(memberId);
@@ -1226,28 +1240,39 @@
        String sign = MD5.MD5Encode(stringBuffer.toString());
        objectObjectHashMap.put("sign",sign);
        String url = "https://data.muchun.co/api/bindCustomer";
        log.info("请求参数"+objectObjectHashMap);
        String result = HttpCurlUtil.sendPost(url, objectObjectHashMap);
        log.info("绑定用户"+result);
        Integer retCode = JSONUtil.parseObj(result).getInt("retCode");
        String message = JSONUtil.parseObj(result).getStr("message");
        if(0 != retCode || !"绑定成功".equals(message)){
            return new FebsResponse().fail().message(message);
        }
        Long bindId = JSONUtil.parseObj(result).getJSONObject("data").getLong("userId");
        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)){
            MallStoreMember mallStoreMember = new MallStoreMember();
            mallStoreMember.setMemberId(memberId);
            mallStoreMember.setBindId(bindId);
            mallStoreMember.setStoreId(mallStoreItem.getStoreId());
            mallStoreMember.setStoreItemId(mallStoreItem.getId());
        MallStoreMember mallStoreMember = new MallStoreMember();
        mallStoreMember.setMemberId(memberId);
        mallStoreMember.setBindId(bindId);
        mallStoreMember.setStoreId(mallStoreItem.getStoreId());
        mallStoreMember.setStoreItemId(mallStoreItem.getId());
            mallStoreMember.setAccount(shopAccount);
            mallStoreMember.setPassword(shopPwd);
        mallStoreMember.setAccount(shopAccount);
        mallStoreMember.setPassword(shopPwd);
        mallStoreMember.setName(name);
        mallStoreMember.setAddress(address);
        mallStoreMember.setAge(age);
        mallStoreMember.setPhone(phoneNumber);
        mallStoreMemberMapper.insert(mallStoreMember);
            mallStoreMember.setName(name);
            mallStoreMember.setAddress(address);
            mallStoreMember.setAge(age);
            mallStoreMember.setPhone(phoneNumber);
            mallStoreMemberMapper.insert(mallStoreMember);
        }
        return new FebsResponse().success().message("绑定成功");
    }
@@ -1305,6 +1330,162 @@
        return new FebsResponse().success().data(data);
    }
    /**
     * 绑定医生接口的实现方法
     *
     * @param dto 包含绑定医生所需信息的数据传输对象
     * @return 返回操作结果的响应对象
     * @throws FebsException 如果绑定操作失败,抛出此异常
     */
    @Override
    public FebsResponse bindDoctor(ApiDoctorBindDto dto) {
        // 获取当前登录用户的ID
        Long memberId = LoginUserUtil.getLoginUser().getId();
        log.info("开始绑定医生{}",memberId);
        // 从DTO中提取邀请ID和门店会员ID
        String inviteId = dto.getInviteId();
        Long storeMemberId = dto.getStoreMemberId();
        // 根据门店会员ID查询门店会员信息
        MallStoreMember mallStoreMember = mallStoreMemberMapper.selectOne(
                new LambdaQueryWrapper<MallStoreMember>()
                .eq(MallStoreMember::getId,storeMemberId)
                .eq(MallStoreMember::getMemberId,memberId)
                );
        // 如果门店会员信息为空,抛出异常
        if(null == mallStoreMember){
            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())
                        .eq(MallDoctor::getMemberId, mallMember.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.setBindAge(mallStoreMember.getAge());
            Long storeId = mallStoreMember.getStoreId();
            Long storeItemId = mallStoreMember.getStoreItemId();
            MallStore mallStore = mallStoreMapper.selectById(storeId);
            MallStoreItem mallStoreItem = mallStoreItemMapper.selectById(storeItemId);
            mallDoctor.setBindInfo(mallStore.getName()+"-"+mallStoreItem.getCode());
            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());
                MallMember mallMember = this.baseMapper.selectById(mallDoctor.getMemberId());
                apiDoctorListVo.setName(mallMember.getName());
                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.equals(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 = "爱和美医疗";