Administrator
just now 34f9584e3694be322f28b7f6697fc656946ecea2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -34,8 +34,10 @@
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;
@@ -702,17 +704,23 @@
    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 {
    public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto){
        log.info("登录请求参数:{}", JSONObject.toJSONString(apiXcxLoginDto));
        FebsResponse febsResponse = new FebsResponse();
        String code = apiXcxLoginDto.getCode();
        log.info("code:" + code);
        if (StrUtil.isNotBlank(code)) {
            String requrl = getXcxLoginUrl(code);
            String reslutData = HttpCurlUtil.sendGetHttp(requrl, null);
            String reslutData = null;
            try {
                reslutData = HttpCurlUtil.sendGetHttp(requrl, null);
            } catch (IOException e) {
                e.printStackTrace();
            }
            net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(reslutData);
            log.info("微信登录获取到登录信息={}", json);
@@ -739,6 +747,8 @@
                    entity.setSessionKey(sessionKey);
                    entity.setMemberUuid(UUID.getSimpleUUIDString());
                    log.info("公司编码={}", apiXcxLoginDto.getCompanyId());
                    if (StrUtil.isNotEmpty(apiXcxLoginDto.getCompanyId())){
                        YHAiCompany aiCompany = yhAiCompanyMapper.selectOne(
                                Wrappers.lambdaQuery(YHAiCompany.class)
@@ -746,6 +756,24 @@
                        );
                        if (ObjectUtil.isEmpty(aiCompany)){
                            throw new FebsException("公司编码错误");
                        }
                        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();
                        log.info("公司会员数:{}", realNum);
                        log.info("公司会员数:{}", memberNum);
                        log.info("公司会员数:{}", realNum >= memberNum);
                        if (realNum >= memberNum){
                            throw new FebsException("公司会员已满");
                        }
                        entity.setCompanyId(aiCompany.getId());
                    }
@@ -762,7 +790,7 @@
                    entity.setInviteId(inviteId);
                    yhAiMemberMapper.updateById(entity);
                } else {
                    if ("1".equals(entity.getAccountStatus())) {
                    if (entity.getAccountStatus() == 1) {
                        throw new FebsException("账号已停用");
                    }
                    entity.setSessionKey(sessionKey);
@@ -779,15 +807,17 @@
                    redisUtils.del(existToken);
                }
            }
            YhAiMember yhAiMember = yhAiMemberMapper.selectById(entity.getId());
            String token = IdUtil.simpleUUID();
            redisUtils.set(token, JSONObject.toJSONString(entity), -1);
            redisUtils.set(redisKey, token, -1);
            redisUtils.set(token, JSONObject.toJSONString(yhAiMember), 60 * 60 * 24);
            redisUtils.set(redisKey, token, 60 * 60 * 24);
            Map<String, Object> authInfo = new HashMap<>();
            authInfo.put("token", token);
            authInfo.put("appid", xcxProperties.getXcxAppid());
            YhAiMember yhAiMember = yhAiMemberMapper.selectById(entity.getId());
            authInfo.put("member", yhAiMember);
            authInfo.put("rasToken", generateAsaToken(token));
            String rasToken = generateAsaToken(token);
            authInfo.put("rasToken", rasToken);
            log.info("登录成功rasToken={}", rasToken);
            febsResponse.success().data(authInfo);
        } else {
            return febsResponse.fail().message("自动登录失败");
@@ -840,10 +870,29 @@
                throw new FebsException("公司编码不存在");
            }
            if (ObjectUtil.isNotEmpty(aiCompany)){
                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();
                log.info("公司会员数:{}", realNum);
                log.info("公司会员数:{}", memberNum);
                log.info("公司会员数:{}", realNum >= memberNum);
                if (realNum >= memberNum){
                    throw new FebsException("公司会员已满");
                }
                companyId = aiCompany.getId();
            }
            entity.setCompanyId(companyId);
        }
        entity.setCompanyId(companyId);
        yhAiMemberMapper.updateById(entity);
        return new FebsResponse().success();
@@ -2079,6 +2128,13 @@
        return new FebsResponse().success().message("操作成功");
    }
    @Override
    public FebsResponse getCompanyCode() {
        String companyCode = yhAiCompanyMapper.selectDictLabel("xcx_register_default","default");
        return new FebsResponse().success().data(companyCode);
    }
//    public static void main(String[] args) {
//        Long userld = 16425L;
//        String shopAccount = "爱和美医疗";