From 8f1fa009d9ec4dcea9a6a3a63691d11f756ef0d6 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 18 Mar 2026 15:03:38 +0800
Subject: [PATCH] 12等级限制小程序注册使用人数

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |  278 ++++++++++++++++++++-----------------------------------
 1 files changed, 103 insertions(+), 175 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 9f40d2d..f92a99e 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
@@ -1,8 +1,11 @@
 package cc.mrbird.febs.mall.service.impl;
 
 import cc.mrbird.febs.ai.entity.AiCompany;
+import cc.mrbird.febs.ai.entity.AiCompanyMemberApply;
 import cc.mrbird.febs.ai.entity.AiMember;
+import cc.mrbird.febs.ai.enumerates.AiCommonEnum;
 import cc.mrbird.febs.ai.mapper.AiCompanyMapper;
+import cc.mrbird.febs.ai.mapper.AiCompanyMemberApplyMapper;
 import cc.mrbird.febs.ai.mapper.AiMemberMapper;
 import cc.mrbird.febs.ai.service.AiMemberService;
 import cc.mrbird.febs.ai.utils.UUID;
@@ -30,6 +33,12 @@
 import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
 import cc.mrbird.febs.vip.entity.MallVipConfig;
 import cc.mrbird.febs.vip.mapper.MallVipConfigMapper;
+import cc.mrbird.febs.yinhe.entity.YHAiCompany;
+import cc.mrbird.febs.yinhe.entity.YHSysCompanyLevel;
+import cc.mrbird.febs.yinhe.entity.YhAiMember;
+import cc.mrbird.febs.yinhe.mapper.YHAiCompanyMapper;
+import cc.mrbird.febs.yinhe.mapper.YHSysCompanyLevelMapper;
+import cc.mrbird.febs.yinhe.mapper.YhAiMemberMapper;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
@@ -109,6 +118,7 @@
     private final HappyMemberLabelMapper happyMemberLabelMapper;
     private final FebsConfigure febsConfigure;
     private final AiMemberService aiMemberService;
+    private final AiCompanyMemberApplyMapper aiCompanyMemberApplyMapper;
 
 
     @Value("${spring.profiles.active}")
@@ -289,6 +299,27 @@
         if (StrUtil.isNotEmpty(mallMember.getCompanyId())){
             AiCompany aiCompany = aiCompanyMapper.selectById(mallMember.getCompanyId());
             mallMemberVo.setCompanyName(aiCompany.getName());
+            mallMemberVo.setCompanyCode(aiCompany.getCode());
+        }
+
+        List<AiCompanyMemberApply> aiCompanyMemberApplies = aiCompanyMemberApplyMapper.selectList(
+                Wrappers.lambdaQuery(AiCompanyMemberApply.class)
+                        .eq(AiCompanyMemberApply::getMemberId, mallMemberVo.getMemberUuid())
+                        .in(AiCompanyMemberApply::getState, Arrays.asList(0, 1))
+        );
+        if (CollUtil.isEmpty(aiCompanyMemberApplies)){
+            mallMemberVo.setCompanyApplyState(0);
+        }else{
+            List<AiCompanyMemberApply> aiCompanyMemberApplyList = aiCompanyMemberApplyMapper.selectList(
+                    Wrappers.lambdaQuery(AiCompanyMemberApply.class)
+                            .eq(AiCompanyMemberApply::getMemberId, mallMemberVo.getMemberUuid())
+                            .eq(AiCompanyMemberApply::getState, 0)
+            );
+            if (CollUtil.isNotEmpty(aiCompanyMemberApplyList)){
+                mallMemberVo.setCompanyApplyState(2);
+            }else{
+                mallMemberVo.setCompanyApplyState(1);
+            }
         }
 
         HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne(
@@ -671,8 +702,12 @@
 
 
     private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
+    private final YhAiMemberMapper yhAiMemberMapper;
+    private final YHAiCompanyMapper yhAiCompanyMapper;
+    private final YHSysCompanyLevelMapper yhSysCompanyLevelMapper;
 
     @Override
+    @Transactional
     public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto) throws IOException {
         log.info("登录请求参数:{}", JSONObject.toJSONString(apiXcxLoginDto));
         FebsResponse febsResponse = new FebsResponse();
@@ -693,118 +728,68 @@
             String sessionKey = json.getString("session_key");
             log.info("openId={},sessionKey={}", openId, sessionKey);
             // 查询用户是否存在
-            MallMember mallMember = null;
+            YhAiMember entity = null;
             synchronized (this) {
-                mallMember = this.baseMapper.selectMemberByOpenId(openId);
-                if (ObjectUtil.isEmpty(mallMember)) {
+                Date systemTime = new Date();
+                entity = yhAiMemberMapper.selectOne(
+                        Wrappers.lambdaQuery(YhAiMember.class)
+                        .eq(YhAiMember::getOpenId, openId)
+                );
+                if (ObjectUtil.isEmpty(entity)) {
                     // 新增用户
-                    mallMember = new MallMember();
-                    mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE);
-                    mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL);
-                    mallMember.setOpenId(openId);
-                    mallMember.setSessionKey(sessionKey);
-                    mallMember.setTradePassword(SecureUtil.md5("123456"));
+                    entity = new YhAiMember();
+                    entity.setOpenId(openId);
+                    entity.setSessionKey(sessionKey);
 
-                    if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) {
-                        MallMember member = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId());
-                        if (member != null) {
-                            mallMember.setReferrerId(member.getInviteId());
-
-                            //推荐人和推荐人链
-                            boolean flag = false;
-                            String parentId = mallMember.getReferrerId();
-                            if (StrUtil.isBlank(parentId)) {
-                                flag = true;
-                            }
-                            String ids = "";
-                            while (!flag) {
-                                if (StrUtil.isBlank(ids)) {
-                                    ids += parentId;
-                                } else {
-                                    ids += ("," + parentId);
-                                }
-                                MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId);
-                                if (parentMember == null) {
-                                    break;
-                                }
-                                parentId = parentMember.getReferrerId();
-                                if (StrUtil.isBlank(parentMember.getReferrerId())) {
-                                    flag = true;
-                                }
-                            }
-
-                            if (StrUtil.isNotBlank(ids)) {
-                                mallMember.setReferrerIds(ids);
-                            }
-                        }
-                    }
-                    this.baseMapper.insert(mallMember);
-
-                    AiMember aiMember = new AiMember();
-                    aiMember.setId(UUID.getSimpleUUIDString());
+                    entity.setMemberUuid(UUID.getSimpleUUIDString());
                     if (StrUtil.isNotEmpty(apiXcxLoginDto.getCompanyId())){
-                        AiCompany aiCompany = aiCompanyMapper.selectOne(
-                                Wrappers.lambdaQuery(AiCompany.class)
-                                        .eq(AiCompany::getCode, apiXcxLoginDto.getCompanyId())
-                                        .last("limit 1")
+                        YHAiCompany aiCompany = yhAiCompanyMapper.selectOne(
+                                Wrappers.lambdaQuery(YHAiCompany.class)
+                                        .eq(YHAiCompany::getCode, apiXcxLoginDto.getCompanyId())
                         );
-                        if (ObjectUtil.isNotEmpty(aiCompany)){
-                            aiMember.setCompanyId(aiCompany.getId());
+                        if (ObjectUtil.isEmpty(aiCompany)){
+                            throw new FebsException("公司编码错误");
                         }
-                    }
-                    aiMember.setCreatedTime(new Date());
-                    aiMemberMapper.insert(aiMember);
-
-                    mallMember = this.baseMapper.selectMemberByOpenId(openId);
-                    String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId());
-                    mallMember.setMemberUuid(aiMember.getId());
-                    if (StrUtil.isNotEmpty(aiMember.getCompanyId())){
-                        mallMember.setCompanyId(aiMember.getCompanyId());
-                    }
-                    mallMember.setInviteId(inviteId);
-                    mallMember.setName("新用户"+inviteId);
-                    this.baseMapper.updateById(mallMember);
-                    MallMemberWallet wallet = new MallMemberWallet();
-                    wallet.setBalance(BigDecimal.ZERO);
-                    wallet.setMemberId(mallMember.getId());
-                    mallMemberWalletMapper.insert(wallet);
-
-                    //分销员的邀请码赠送优惠卷
-                    if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) {
-                        String couponUUID = IdUtil.simpleUUID();
-                        //通过邀请人信息,获取能领取的优惠卷信息
-                        MallMember refMember = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId());
-                        if(ObjectUtil.isNotEmpty(refMember)){
-                            SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(refMember.getId());
-                            if(ObjectUtil.isNotEmpty(salemanCoupon)){
-                                Long couponId = salemanCoupon.getCouponId();
-                                List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(mallMember.getId(), couponId);
-                                if(CollUtil.isEmpty(mallMemberCoupons)){
-                                    //商品优惠卷如果绑定了,那么当前登陆者获取一张卷
-                                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId);
-                                    MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
-                                    mallMemberCoupon.setCouponId(couponId);
-                                    mallMemberCoupon.setCouponName(mallGoodsCoupon.getName());
-                                    mallMemberCoupon.setMemberId(mallMember.getId());
-                                    mallMemberCoupon.setCouponUuid(couponUUID);
-                                    mallMemberCoupon.setInviteId(refMember.getInviteId());
-                                    mallMemberCoupon.setState(1);
-                                    mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay()));
-                                    mallMemberCouponMapper.insert(mallMemberCoupon);
-                                }
-                            }
+                        String levelCode = aiCompany.getLevelCode();
+                        YHSysCompanyLevel yhSysCompanyLevel = yhSysCompanyLevelMapper.selectOne(
+                                Wrappers.lambdaQuery(YHSysCompanyLevel.class)
+                                        .eq(YHSysCompanyLevel::getCode, levelCode)
+                        );
+                        Integer memberNum = yhSysCompanyLevel.getMemberNum();
+                        List<YhAiMember> yhAiMembers = yhAiMemberMapper.selectList(
+                                Wrappers.lambdaQuery(YhAiMember.class)
+                                        .eq(YhAiMember::getCompanyId, aiCompany.getId())
+                                        .isNull(YhAiMember::getRoleId)
+                        );
+                        Integer realNum = CollUtil.isEmpty(yhAiMembers) ? 0 : yhAiMembers.size();
+                        if (realNum >= memberNum){
+                            throw new FebsException("公司会员已满");
                         }
+                        entity.setCompanyId(aiCompany.getId());
                     }
+                    entity.setCreateTime(systemTime);
+                    entity.setUpdateTime(systemTime);
+                    entity.setLastLoginTime(systemTime);
+                    yhAiMemberMapper.insert(entity);
+
+                    entity = yhAiMemberMapper.selectOne(
+                            Wrappers.lambdaQuery(YhAiMember.class)
+                                    .eq(YhAiMember::getOpenId, openId)
+                    );
+                    String inviteId = ShareCodeUtil.toSerialCode(entity.getId());
+                    entity.setInviteId(inviteId);
+                    yhAiMemberMapper.updateById(entity);
                 } else {
-                    if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) {
+                    if ("1".equals(entity.getAccountStatus())) {
                         throw new FebsException("账号已停用");
                     }
-                    mallMember.setSessionKey(sessionKey);
-                    this.baseMapper.updateById(mallMember);
+                    entity.setSessionKey(sessionKey);
+                    entity.setLastLoginTime(systemTime);
+                    yhAiMemberMapper.updateById(entity);
                 }
             }
             // 存放redis
-            String redisKey = AppContants.XCX_LOGIN_PREFIX + mallMember.getId();
+            String redisKey = AppContants.XCX_LOGIN_PREFIX + entity.getMemberUuid();
             String existToken = redisUtils.getString(redisKey);
             if (StrUtil.isNotBlank(existToken)) {
                 Object o = redisUtils.get(existToken);
@@ -812,13 +797,14 @@
                     redisUtils.del(existToken);
                 }
             }
+            YhAiMember yhAiMember = yhAiMemberMapper.selectById(entity.getId());
             String token = IdUtil.simpleUUID();
-            redisUtils.set(token, JSONObject.toJSONString(mallMember), -1);
+            redisUtils.set(token, JSONObject.toJSONString(yhAiMember), -1);
             redisUtils.set(redisKey, token, -1);
             Map<String, Object> authInfo = new HashMap<>();
             authInfo.put("token", token);
             authInfo.put("appid", xcxProperties.getXcxAppid());
-            authInfo.put("member", mallMember);
+            authInfo.put("member", yhAiMember);
             authInfo.put("rasToken", generateAsaToken(token));
             febsResponse.success().data(authInfo);
         } else {
@@ -832,45 +818,41 @@
     public FebsResponse xcxSaveInfo(ApiXcxSaveInfoDto apiXcxSaveInfoDto) {
         log.info("name={},phone={},avatar={},sex={}",
                 apiXcxSaveInfoDto.getNickName(),apiXcxSaveInfoDto.getPhone(),apiXcxSaveInfoDto.getAvatarUrl(),apiXcxSaveInfoDto.getGender());
-        Long memberId = LoginUserUtil.getLoginUser().getId();
-        MallMember mallMember = this.baseMapper.selectById(memberId);
+        String memberId = YHLoginUserUtil.getLoginUser().getMemberUuid();
+        YhAiMember entity = yhAiMemberMapper.selectOne(
+                Wrappers.lambdaQuery(YhAiMember.class)
+                        .eq(YhAiMember::getMemberUuid, memberId)
+        );
         String nickName = apiXcxSaveInfoDto.getNickName();
         if(StrUtil.isNotEmpty(nickName)){
-            mallMember.setName(nickName);
+            entity.setName(nickName);
         }
         String phone = apiXcxSaveInfoDto.getPhone();
         if(StrUtil.isNotEmpty(phone)){
-            mallMember.setPhone(phone);
+            entity.setPhone(phone);
         }
         String avatarUrl = apiXcxSaveInfoDto.getAvatarUrl();
         if(StrUtil.isNotEmpty(avatarUrl)){
-            mallMember.setAvatar(avatarUrl);
+            entity.setAvatar(avatarUrl);
         }
 
         if (StrUtil.isNotBlank(apiXcxSaveInfoDto.getRealName())) {
-            mallMember.setRealName(apiXcxSaveInfoDto.getRealName());
+            entity.setRealName(apiXcxSaveInfoDto.getRealName());
         }
 
         if (apiXcxSaveInfoDto.getBirthday() != null) {
-            mallMember.setBirthday(apiXcxSaveInfoDto.getBirthday());
-        }
-
-        List<MallVipConfig> configs = mallVipConfigMapper.selectVipConfigList();
-        if (StrUtil.isBlank(mallMember.getLevel()) && CollUtil.isNotEmpty(configs)) {
-            MallVipConfig mallVipConfig = configs.get(0);
-            mallMember.setLevel(mallVipConfig.getCode());
+            entity.setBirthday(apiXcxSaveInfoDto.getBirthday());
         }
 
         if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getGender())){
-            mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男");
+            entity.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男");
         }
 
         String companyId = apiXcxSaveInfoDto.getCompanyId();
-        if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getCompanyId())){
-            AiCompany aiCompany = aiCompanyMapper.selectOne(
-                    Wrappers.lambdaQuery(AiCompany.class)
-                            .eq(AiCompany::getCode, apiXcxSaveInfoDto.getCompanyId())
-                            .last("limit 1")
+        if(ObjectUtil.isNotEmpty(companyId)){
+            YHAiCompany aiCompany = yhAiCompanyMapper.selectOne(
+                    Wrappers.lambdaQuery(YHAiCompany.class)
+                            .eq(YHAiCompany::getCode, companyId)
             );
             if (ObjectUtil.isEmpty(aiCompany)){
                 throw new FebsException("公司编码不存在");
@@ -879,63 +861,9 @@
                 companyId = aiCompany.getId();
             }
         }
-        mallMember.setCompanyId(companyId);
-        this.baseMapper.updateById(mallMember);
+        entity.setCompanyId(companyId);
+        yhAiMemberMapper.updateById(entity);
 
-        String memberUuid = mallMember.getMemberUuid();
-        AiMember aiMember = aiMemberService.getById(memberUuid);
-        if (ObjectUtil.isNotEmpty(aiMember) && StrUtil.isNotEmpty(mallMember.getCompanyId())){
-            aiMemberService.update(null,
-                    Wrappers.lambdaUpdate(AiMember.class)
-                    .set(AiMember::getCompanyId, mallMember.getCompanyId())
-                    .eq(AiMember::getId, aiMember.getId())
-                    );
-        }
-
-
-//        //完善信息赠送新人礼
-//        if (StrUtil.isNotBlank(mallMember.getPhone()) && mallMember.getNewGift() == 0) {
-//            DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-//                    CommonDictionaryEnum.NEW_GIFT_SETTING.getType(),
-//                    CommonDictionaryEnum.NEW_GIFT_SETTING.getCode()
-//            );
-//            mallMember.setNewGift(1);
-//            this.baseMapper.updateById(mallMember);
-//
-//            ApiNewGiftSettingDto apiNewGiftSettingDto = JSONObject.parseObject(dic.getValue(), ApiNewGiftSettingDto.class);
-//            if (apiNewGiftSettingDto.getState() == 1) {
-//                String prizeScore = apiNewGiftSettingDto.getPrizeScore();
-//                BigDecimal bigDecimal = new BigDecimal(prizeScore).setScale(0, RoundingMode.HALF_DOWN);
-//                if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) {
-//                    walletService.add(bigDecimal, mallMember.getId(), "prizeScore");
-//                    mallMoneyFlowService.addMoneyFlow(
-//                            mallMember.getId(),
-//                            bigDecimal,
-//                            ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getValue(),
-//                            MallUtils.getOrderNum(),
-//                            FlowTypeEnum.PRIZE_SCORE.getValue(),
-//                            StrUtil.format(ScoreFlowTypeEnum.MEMBER_INFO_GIFT.getDesc(),bigDecimal),
-//                            2
-//                    );
-//                }
-//                if (apiNewGiftSettingDto.getCouponId() != null) {
-//                    MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(apiNewGiftSettingDto.getCouponId());
-//                    if(ObjectUtil.isNotEmpty(mallGoodsCoupon)){
-//                        MallMemberCoupon memberCoupon = new MallMemberCoupon();
-//                        memberCoupon.setCouponId(mallGoodsCoupon.getId());
-//                        memberCoupon.setCouponName(mallGoodsCoupon.getName());
-//                        memberCoupon.setInviteId(mallMember.getInviteId());
-//                        memberCoupon.setCouponUuid(IdUtil.simpleUUID());
-//                        memberCoupon.setState(1);
-//                        memberCoupon.setFromType(3);
-//                        memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay()));
-//                        memberCoupon.setMemberId(mallMember.getId());
-//                        mallMemberCouponMapper.insert(memberCoupon);
-//                    }
-//                }
-//
-//            }
-//        }
         return new FebsResponse().success();
     }
 

--
Gitblit v1.9.1