From 31a4b5b1db5d78f8b6557368667b74954a228df5 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 01 Jul 2026 11:43:17 +0800
Subject: [PATCH] refactor(mallMember): 替换 febs.get 为 $.get 请求方法

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |  323 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 246 insertions(+), 77 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 87f89ba..1831857 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
@@ -24,6 +24,7 @@
 import cc.mrbird.febs.vip.mapper.MallVipConfigMapper;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import java.util.List;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
@@ -88,6 +89,7 @@
     private final MallStoreMapper mallStoreMapper;
     private final MallStoreItemMapper mallStoreItemMapper;
     private final MallStoreMemberMapper mallStoreMemberMapper;
+    private final MallDoctorMapper mallDoctorMapper;
 
 
     @Value("${spring.profiles.active}")
@@ -922,45 +924,40 @@
     @Override
     public FebsResponse getCoupon(GetCouponDto getCouponDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
+        Long goodsId = getCouponDto.getGoodsId();
 
-        String couponUUID = IdUtil.simpleUUID();
-//        String couponUUID = getCouponDto.getCouponUUID();
-//        QueryWrapper<MallMemberCoupon> objectQueryWrapper = new QueryWrapper<>();
-//        objectQueryWrapper.eq("coupon_uuid",couponUUID);
-//        List<MallMemberCoupon> mallMemberCouponDone = mallMemberCouponMapper.selectList(objectQueryWrapper);
-//        if(CollUtil.isNotEmpty(mallMemberCouponDone)){
-//            return new FebsResponse().success();
-//        }
+        //验证商品存不存在,且上没上架
+        MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
+        if(ObjectUtil.isEmpty(mallGoods) || MallGoods.ISSALE_STATUS_ENABLE != mallGoods.getIsSale()){
+            return new FebsResponse().success();
+        }
+
         //通过邀请人信息,获取能领取的优惠卷信息
         MallMember mallMember = this.baseMapper.selectInfoByInviteId(getCouponDto.getInviteId());
         if(ObjectUtil.isNotEmpty(mallMember)){
-            SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(mallMember.getId());
-            if(ObjectUtil.isNotEmpty(salemanCoupon)){
-                Long couponId = salemanCoupon.getCouponId();
-                Long goodsId = getCouponDto.getGoodsId();
-                MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
-                //验证商品存不存在,且上没上架
-                if(ObjectUtil.isNotEmpty(mallGoods)
-                    && MallGoods.ISSALE_STATUS_ENABLE == mallGoods.getIsSale()){
-//                List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponId(memberId, goodsId, couponId,mallMember.getInviteId());
-//                List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponIdWithOutInviteId(memberId, goodsId, couponId);
-                    List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponIdWithOutInviteId(memberId, goodsId);
-                    if(CollUtil.isEmpty(mallMemberCoupons)){
-                        //商品优惠卷如果绑定了,那么当前登陆者获取一张卷
-                        List<CouponGoods> couponGoodsList = couponGoodsMapper.selectByGoodIdAndCouponId(goodsId,couponId);
-                        MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
-                        if(CollUtil.isNotEmpty(couponGoodsList)){
-                            MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
-                            mallMemberCoupon.setCouponId(couponId);
-                            mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
-                            mallMemberCoupon.setMemberId(memberId);
-                            mallMemberCoupon.setGoodsId(goodsId);
-                            mallMemberCoupon.setCouponUuid(couponUUID);
-                            mallMemberCoupon.setInviteId(mallMember.getInviteId());
-                            mallMemberCoupon.setState(1);
-                            mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay()));
-                            mallMemberCouponMapper.insert(mallMemberCoupon);
-                        }
+            List<SalemanCoupon> salemanCouponList = salemanCouponMapper.selectByMemberId(mallMember.getId());
+            if(CollUtil.isNotEmpty(salemanCouponList)){
+                for(SalemanCoupon salemanCoupon : salemanCouponList){
+                    Long couponId = salemanCoupon.getCouponId();
+                    //验证是否已经领取过该优惠券
+                    List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(memberId, couponId);
+                    if(CollUtil.isNotEmpty(mallMemberCoupons)){
+                        continue;
+                    }
+                    //商品优惠卷如果绑定了该商品,那么当前登陆者获取一张卷
+                    List<CouponGoods> couponGoodsList = couponGoodsMapper.selectByGoodIdAndCouponId(goodsId, couponId);
+                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
+                    if(CollUtil.isNotEmpty(couponGoodsList) && ObjectUtil.isNotEmpty(mallGoodsCoupon)){
+                        MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
+                        mallMemberCoupon.setCouponId(couponId);
+                        mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
+                        mallMemberCoupon.setMemberId(memberId);
+                        mallMemberCoupon.setGoodsId(goodsId);
+                        mallMemberCoupon.setCouponUuid(IdUtil.simpleUUID());
+                        mallMemberCoupon.setInviteId(mallMember.getInviteId());
+                        mallMemberCoupon.setState(1);
+                        mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay()));
+                        mallMemberCouponMapper.insert(mallMemberCoupon);
                     }
                 }
             }
@@ -971,26 +968,29 @@
     @Override
     public FebsResponse scanCoupon(GetCouponDto getCouponDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
-        String couponUUID = IdUtil.simpleUUID();
         //通过邀请人信息,获取能领取的优惠卷信息
         MallMember mallMember = this.baseMapper.selectInfoByInviteId(getCouponDto.getInviteId());
         if(ObjectUtil.isNotEmpty(mallMember)){
-            SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(mallMember.getId());
-            if(ObjectUtil.isNotEmpty(salemanCoupon)){
-                Long couponId = salemanCoupon.getCouponId();
-                List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(memberId, couponId);
-                if(CollUtil.isEmpty(mallMemberCoupons)){
-                    //商品优惠卷如果绑定了,那么当前登陆者获取一张卷
-                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
-                    MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
-                    mallMemberCoupon.setCouponId(couponId);
-                    mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
-                    mallMemberCoupon.setMemberId(memberId);
-                    mallMemberCoupon.setCouponUuid(couponUUID);
-                    mallMemberCoupon.setInviteId(mallMember.getInviteId());
-                    mallMemberCoupon.setState(1);
-                    mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay()));
-                    mallMemberCouponMapper.insert(mallMemberCoupon);
+            List<SalemanCoupon> salemanCouponList = salemanCouponMapper.selectByMemberId(mallMember.getId());
+            if(CollUtil.isNotEmpty(salemanCouponList)){
+                for(SalemanCoupon salemanCoupon : salemanCouponList){
+                    Long couponId = salemanCoupon.getCouponId();
+                    List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(memberId, couponId);
+                    if(CollUtil.isEmpty(mallMemberCoupons)){
+                        //商品优惠卷如果绑定了,那么当前登陆者获取一张卷
+                        MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
+                        if(ObjectUtil.isNotEmpty(mallGoodsCoupon)){
+                            MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
+                            mallMemberCoupon.setCouponId(couponId);
+                            mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
+                            mallMemberCoupon.setMemberId(memberId);
+                            mallMemberCoupon.setCouponUuid(IdUtil.simpleUUID());
+                            mallMemberCoupon.setInviteId(mallMember.getInviteId());
+                            mallMemberCoupon.setState(1);
+                            mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay()));
+                            mallMemberCouponMapper.insert(mallMemberCoupon);
+                        }
+                    }
                 }
             }
         }
@@ -1096,10 +1096,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())) {
@@ -1196,14 +1198,14 @@
 //        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)){
-            return new FebsResponse().fail().message("您已经绑定过了");
-        }
+//        List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(
+//                new LambdaQueryWrapper<MallStoreMember>()
+//                        .eq(MallStoreMember::getMemberId, memberId)
+//                        .eq(MallStoreMember::getStoreItemId, bindStoreMemberDto.getStoreItemId())
+//        );
+//        if(CollUtil.isNotEmpty(mallStoreMembers)){
+//            return new FebsResponse().fail().message("您已经绑定过了");
+//        }
 
         MallMember mallMember = this.baseMapper.selectById(memberId);
         Integer sex = "女".equals(mallMember.getSex()) ? 3 : 2;
@@ -1237,28 +1239,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("绑定成功");
     }
 
@@ -1316,6 +1329,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 = "爱和美医疗";

--
Gitblit v1.9.1