3
0
Fork 0

## 会员自己升级店主、代理判断是否1+1多升一级;

This commit is contained in:
cabbage 2025-08-22 11:37:46 +08:00
parent 296af0b3e8
commit 33ea433fad
2 changed files with 48 additions and 15 deletions

View File

@ -1509,9 +1509,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 保存会员等级变动
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0);
if (EGrade.VIP.getValue() == gradeDTO.getGradeValue()
|| EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 店主代理级别判断处理区域
if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 代理级别判断处理区域
if (null != saOrder.getRegionProvince()
&& null != saOrder.getRegionCity()) {
iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder()
@ -1532,18 +1531,14 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Transactional(rollbackFor = Exception.class)
@Override
public void updateRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt) {
// 更新会员信息
updateCuMember(cuMember);
// 会员等级
// 会员新等级
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
if (!cuMember.getPkSettleGrade().equals(saOrder.getPkGradeOld())) {
// 保存会员等级变动如果旧等级和新等级相同则不记录
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld());
if (EGrade.VIP.getValue() == gradeDTO.getGradeValue()
|| EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 店主代理级别判断处理区域
if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 代理级别判断处理区域
if (null != saOrder.getRegionProvince()
&& null != saOrder.getRegionCity()) {
iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder()
@ -1554,11 +1549,16 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
.build());
}
}
// 判断处理会员自己等级下级有店主代理自己判断是否升级高级店主董事代理
this.handleSelfLevel(gradeDTO, cuMember, saOrder.getPayTime());
}
// 更新会员信息
updateCuMember(cuMember);
// 判断处理推荐人等级
// 判断处理推荐人等级自己是店主代理判断推荐人是否升级高级店主董事代理
handleParentUpgrade(cuMember, saOrder, gradeDTO);
// 处理会员账户
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
}
@ -1677,11 +1677,41 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
}
/**
* 处理会员自己等级
*
* @param gradeDTO 新等级
* @param cuMember 会员自己
* @param payTime 订单支付时间升级记录时间
*/
private void handleSelfLevel(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
if (null == gradeDTO) {
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
}
if (gradeDTO.getGradeValue().equals(EGrade.REGION.getValue())) {
// 会员当前是区域代理查询直推是否存在区域代理
SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.REGION.getValue());
if (null != recommendOrder) {
recommendOrder.setPayTime(payTime);
cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), cuMember.getPkSettleCountry()).getData().getPkId());
saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId());
}
} else if (gradeDTO.getGradeValue().equals(EGrade.VIP.getValue())) {
// 会员当前是博羚店主查询直推是否存在博羚店主
SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.VIP.getValue());
if (null != recommendOrder) {
recommendOrder.setPayTime(payTime);
cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData().getPkId());
saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId());
}
}
}
/**
* 处理推荐人等级
*
* @param saOrder
* @param currentDateTime
* @param saOrder 升级订单
* @param currentDateTime 当前时间
*/
private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) {
// 注册升级订单需要判断是否有推荐人升级的

View File

@ -2418,9 +2418,12 @@
<if test="orderCode != null and orderCode != ''">
and so.order_code != #{orderCode}
</if>
and bg.grade_value >= #{gradeValue}) so
and bg.grade_value >= #{gradeValue}
order by so.pay_time
) so
where rownum = 1
</select>
<select id="getMemberCountWithGradeAndParent" resultType="java.lang.Integer">
select
count(cu.PK_ID)