From 3694db456aadbacaa7ba4e794a4196a851e0c647 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 08 Apr 2025 11:59:11 +0800 Subject: [PATCH] refactor(mall): 修改医生绑定信息 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 210 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 189 insertions(+), 21 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 9ce7693..f3f1418 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())) { @@ -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); } @@ -1194,7 +1202,6 @@ List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList( new LambdaQueryWrapper<MallStoreMember>() .eq(MallStoreMember::getMemberId, memberId) - .eq(MallStoreMember::getStoreId, bindStoreMemberDto.getStoreId()) .eq(MallStoreMember::getStoreItemId, bindStoreMemberDto.getStoreItemId()) ); if(CollUtil.isNotEmpty(mallStoreMembers)){ @@ -1233,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("绑定成功"); } @@ -1312,6 +1330,156 @@ 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.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()); + 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 = "爱和美医疗"; -- Gitblit v1.9.1