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