ruoyi-system/src/main/java/com/ruoyi/system/model/TAppUser.java
@@ -127,6 +127,10 @@ @TableField("referrer_sys_user_id") private Integer referrerSysUserId; @ApiModelProperty(value = "股东推荐时间") @TableField("referrer_sys_user_time") private LocalDateTime referrerSysUserTime; @ApiModelProperty(value = "当月预估积分") @TableField(exist = false) private BigDecimal estimatedMonthlyIntegral; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ICBCNotifyServiceImpl.java
@@ -418,21 +418,60 @@ if (appUser.getCompanyId() == null) { Integer companyId = null; // 优先使用 referrerSysUserId 对应的 SysUser 的 companyId if (appUser.getReferrerSysUserId() != null) { SysUser sysUser = sysUserService.selectUserById(Long.valueOf(appUser.getReferrerSysUserId())); if (sysUser != null && sysUser.getCompanyId() != null) { companyId = sysUser.getCompanyId(); log.info("用户{}通过股东(SysUser:{})关联公司{}", appUserId, appUser.getReferrerSysUserId(), companyId); } } // 判断是否同时存在两种推荐来源且推荐状态为临时 boolean hasBothReferrer = appUser.getReferrerUserId() != null && Integer.valueOf(1).equals(appUser.getReferrerStatus()) && appUser.getReferrerSysUserId() != null; // 如果 referrerSysUserId 为空或对应的 SysUser 没有 companyId,则使用 referrerUserId 对应的 TAppUser 的 companyId if (companyId == null && appUser.getReferrerUserId() != null) { TAppUser referrerAppUser = appUserService.getById(appUser.getReferrerUserId()); if (referrerAppUser != null && referrerAppUser.getCompanyId() != null) { companyId = referrerAppUser.getCompanyId(); log.info("用户{}通过推荐人(TAppUser:{})关联公司{}", appUserId, appUser.getReferrerUserId(), companyId); if (hasBothReferrer) { // 两种推荐来源都存在,比较推荐时间,取后推荐的用户的 companyId LocalDateTime referrerTime = appUser.getReferrerTime(); LocalDateTime referrerSysUserTime = appUser.getReferrerSysUserTime(); // 判断哪个推荐时间更晚 boolean useSysUserCompany = false; if (referrerSysUserTime != null && referrerTime != null) { useSysUserCompany = referrerSysUserTime.isAfter(referrerTime); } else if (referrerSysUserTime != null) { useSysUserCompany = true; } // 如果 referrerTime != null 且 referrerSysUserTime == null,则 useSysUserCompany 保持 false if (useSysUserCompany) { // 使用股东(SysUser)的 companyId SysUser sysUser = sysUserService.selectUserById(Long.valueOf(appUser.getReferrerSysUserId())); if (sysUser != null && sysUser.getCompanyId() != null) { companyId = sysUser.getCompanyId(); log.info("用户{}两种推荐来源都存在,股东推荐时间({})晚于普通推荐时间({}),通过股东(SysUser:{})关联公司{}", appUserId, referrerSysUserTime, referrerTime, appUser.getReferrerSysUserId(), companyId); } } else { // 使用推荐人(TAppUser)的 companyId TAppUser referrerAppUser = appUserService.getById(appUser.getReferrerUserId()); if (referrerAppUser != null && referrerAppUser.getCompanyId() != null) { companyId = referrerAppUser.getCompanyId(); log.info("用户{}两种推荐来源都存在,普通推荐时间({})晚于或等于股东推荐时间({}),通过推荐人(TAppUser:{})关联公司{}", appUserId, referrerTime, referrerSysUserTime, appUser.getReferrerUserId(), companyId); } } } else { // 只有一种推荐来源,按原逻辑处理 // 优先使用 referrerSysUserId 对应的 SysUser 的 companyId if (appUser.getReferrerSysUserId() != null) { SysUser sysUser = sysUserService.selectUserById(Long.valueOf(appUser.getReferrerSysUserId())); if (sysUser != null && sysUser.getCompanyId() != null) { companyId = sysUser.getCompanyId(); log.info("用户{}通过股东(SysUser:{})关联公司{}", appUserId, appUser.getReferrerSysUserId(), companyId); } } // 如果 referrerSysUserId 为空或对应的 SysUser 没有 companyId,则使用 referrerUserId 对应的 TAppUser 的 companyId if (companyId == null && appUser.getReferrerUserId() != null) { TAppUser referrerAppUser = appUserService.getById(appUser.getReferrerUserId()); if (referrerAppUser != null && referrerAppUser.getCompanyId() != null) { companyId = referrerAppUser.getCompanyId(); log.info("用户{}通过推荐人(TAppUser:{})关联公司{}", appUserId, appUser.getReferrerUserId(), companyId); } } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAppUserServiceImpl.java
@@ -83,6 +83,7 @@ SysUser sysUser = sysUserService.selectUserById(superiorId.longValue()); if (Objects.nonNull(sysUser)) { appUser.setReferrerSysUserId(superiorId); appUser.setReferrerSysUserTime(LocalDateTime.now()); } else { log.info("推广员不存在,绑定superiorId={}", superiorId); } @@ -234,8 +235,68 @@ //默认返回空对象 TCompany company = new TCompany(); TAppUser appUser = this.getById(appUserId); if (Objects.nonNull(appUser) && Objects.nonNull(appUser.getCompanyId())) { company = tCompanyService.getById(appUser.getCompanyId()); if (Objects.nonNull(appUser)) { if (Objects.nonNull(appUser.getCompanyId())) { company = tCompanyService.getById(appUser.getCompanyId()); } else { // 判断是否同时存在两种推荐来源且推荐状态为临时 boolean hasBothReferrer = appUser.getReferrerUserId() != null && Integer.valueOf(1).equals(appUser.getReferrerStatus()) && appUser.getReferrerSysUserId() != null; if (hasBothReferrer) { // 两种推荐来源都存在,比较推荐时间,取后推荐的用户的 companyId LocalDateTime referrerTime = appUser.getReferrerTime(); LocalDateTime referrerSysUserTime = appUser.getReferrerSysUserTime(); // 判断哪个推荐时间更晚 boolean useSysUserCompany = false; if (referrerSysUserTime != null && referrerTime != null) { useSysUserCompany = referrerSysUserTime.isAfter(referrerTime); } else if (referrerSysUserTime != null) { useSysUserCompany = true; } // 如果 referrerTime != null 且 referrerSysUserTime == null,则 useSysUserCompany 保持 false if (useSysUserCompany) { // 使用股东(SysUser)的 companyId SysUser sysUser = sysUserService.selectUserById(Long.valueOf(appUser.getReferrerSysUserId())); if (sysUser != null && sysUser.getCompanyId() != null) { company = tCompanyService.getById(sysUser.getCompanyId()); log.info("用户{}两种推荐来源都存在,股东推荐时间({})晚于普通推荐时间({}),通过股东(SysUser:{})关联公司{}进行加下单", appUserId, referrerSysUserTime, referrerTime, appUser.getReferrerSysUserId(), company.getId()); } } else { // 使用推荐人(TAppUser)的 companyId TAppUser referrerAppUser = this.getById(appUser.getReferrerUserId()); if (referrerAppUser != null && referrerAppUser.getCompanyId() != null) { company = tCompanyService.getById(referrerAppUser.getCompanyId()); log.info("用户{}两种推荐来源都存在,普通推荐时间({})晚于或等于股东推荐时间({}),通过推荐人(TAppUser:{})关联公司{}进行加下单", appUserId, referrerTime, referrerSysUserTime, appUser.getReferrerUserId(), company.getId()); } } } else { // 只有一种推荐来源,按原逻辑处理 // 优先使用 referrerSysUserId 对应的 SysUser 的 companyId if (appUser.getReferrerSysUserId() != null) { SysUser sysUser = sysUserService.selectUserById(Long.valueOf(appUser.getReferrerSysUserId())); if (sysUser != null && sysUser.getCompanyId() != null) { company = tCompanyService.getById(sysUser.getCompanyId()); log.info("用户{}通过股东(SysUser:{})关联公司{}进行加下单", appUserId, appUser.getReferrerSysUserId(), company.getId()); } } // 如果 referrerSysUserId 为空或对应的 SysUser 没有 companyId,则使用 referrerUserId 对应的 TAppUser 的 companyId if (company.getId() == null && appUser.getReferrerUserId() != null) { TAppUser referrerAppUser = this.getById(appUser.getReferrerUserId()); if (referrerAppUser != null && referrerAppUser.getCompanyId() != null) { company = tCompanyService.getById(referrerAppUser.getCompanyId()); log.info("用户{}通过推荐人(TAppUser:{})关联公司{}进行加下单", appUserId, appUser.getReferrerUserId(), company.getId()); } } } } } return company; }