From 10a4e46ce3424ef9f88163a3c1a1edcf2a9a6154 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 08 Apr 2025 16:29:30 +0800 Subject: [PATCH] refactor(mall): 更新 ApiDoctorAuthDeleteDto 中 ID 校验注解 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 162 insertions(+), 4 deletions(-) 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 978c1d5..1a3f1b3 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 @@ -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())) { @@ -1327,6 +1330,161 @@ 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()) + .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 != 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 = "爱和美医疗"; -- Gitblit v1.9.1