## 升级方式改为一次性补差升级;
This commit is contained in:
parent
5cedaa4f2e
commit
78c9b8d038
|
@ -2638,7 +2638,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
// 注册专区直接算等级
|
||||
bdGrade = this.getGradeByBox(boxNum, gradeList, null, true);
|
||||
} else if (ESpecialArea.RETAIL_UPGRADE.getValue() == specialArea) {
|
||||
// 升级专区取消,一次性补差升级
|
||||
// 升级专区,一次性补差升级
|
||||
if (boxNum == 0) {
|
||||
// 不满足升级条件
|
||||
throw new ServiceException("不满足升级条件");
|
||||
|
@ -2651,8 +2651,10 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
throw new ServiceException("当前已经是可以购买的最高等级");
|
||||
}
|
||||
|
||||
// 获取升级盒数基数
|
||||
int baseBoxNum = this.handleBaseBoxNum(updateGradeMember, memberGrade, gradeList, boxProductList, systemType);
|
||||
// 计算等级
|
||||
bdGrade = this.getGradeByBox(boxNum, gradeList, memberGrade, true);
|
||||
bdGrade = this.getGradeByBox(boxNum + baseBoxNum, gradeList, memberGrade, true);
|
||||
|
||||
// 会员等级 大于等于 购买盒数等级,则不充足升级条件
|
||||
if (memberGrade.getGradeValue().compareTo(bdGrade.getGradeValue()) >= 0) {
|
||||
|
@ -2703,7 +2705,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
Optional<BdGrade> gradeOptional = gradeList.stream().filter(tmpGrade -> tmpGrade.getGradeValue() > memberGrade.getGradeValue())
|
||||
.sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed())
|
||||
.filter(tmpGrade -> tmpGrade.getBoxNumber() != 0)
|
||||
.filter(tmpGrade -> tmpGrade.getBoxNumber() - memberGrade.getBoxNumber() <= boxTotal).findFirst();
|
||||
.filter(tmpGrade -> tmpGrade.getBoxNumber() <= boxTotal).findFirst();
|
||||
return gradeOptional.orElse(memberGrade);
|
||||
}
|
||||
}
|
||||
|
@ -2715,7 +2717,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
* @param cuMember 会员信息
|
||||
* @param memberGrade 会员等级信息
|
||||
* @param gradeList 等级列表
|
||||
* @param boxProductList 盒数商品商品
|
||||
* @param boxProductList 盒数商品列表
|
||||
* @param systemType 所属系统
|
||||
* @return
|
||||
*/
|
||||
|
@ -2723,35 +2725,56 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
public int handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade,
|
||||
List<BdGrade> gradeList, List<String> boxProductList,
|
||||
Integer systemType) {
|
||||
// 获取今天开始时间
|
||||
Date todayDate = DateUtils.getStartTime(new Date());
|
||||
// 2025.03.18 调整需求,升级走当天累计,当天买的所有都进行积累,24点之后则重新累积(手动升级前后的盒数都算累计)
|
||||
// 升级盒数基数
|
||||
int baseBoxNum = 0;
|
||||
|
||||
// 是否有升级记录
|
||||
// 会员所有升级记录
|
||||
List<CuMemberLevel> memberLevelList = iCuMemberDetailServiceApi.getUpgradeList(cuMember.getPkId()).getData();
|
||||
if (CollectionUtil.isNotEmpty(memberLevelList)) {
|
||||
// 如果今天有手动升级记录,则以手动升级记录的盒数 + 今天购买的盒数做累计
|
||||
// 最新一次的手动升级记录
|
||||
Optional<CuMemberLevel> lastManualOptional = memberLevelList.stream().filter(tmpGrade -> tmpGrade.getUpType().equals(EUpgradeType.MANUAL_UPGRADE.getValue())).findFirst();
|
||||
if (lastManualOptional.isPresent() && lastManualOptional.get().getUpgradeTime().compareTo(todayDate) >= 0) {
|
||||
// 存在今天的手动升级记录
|
||||
if (lastManualOptional.isPresent()) {
|
||||
// 最新一次的手动升级
|
||||
CuMemberLevel lastMemberLevel = lastManualOptional.get();
|
||||
BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get();
|
||||
baseBoxNum = lastUpdateGrade.getBoxNumber();
|
||||
// 盒数基数 = 手动升级盒数 + 手动升级之后的升级订单盒数
|
||||
baseBoxNum = lastUpdateGrade.getBoxNumber()
|
||||
+ saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, lastMemberLevel.getUpgradeTime(), Collections.singletonList(EOrderType.RETAIL_UPGRADE.getValue()), systemType);
|
||||
} else {
|
||||
// 如果今天没有手动升级记录,则以今天以前最后一条升级记录的盒数 + 今天购买的盒数做累计
|
||||
memberLevelList = memberLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(todayDate) < 0).collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(memberLevelList)) {
|
||||
CuMemberLevel lastMemberLevel = memberLevelList.get(0);
|
||||
BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get();
|
||||
baseBoxNum = lastUpdateGrade.getBoxNumber();
|
||||
}
|
||||
// 没有手动升级记录
|
||||
saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue()), systemType);
|
||||
}
|
||||
}
|
||||
return baseBoxNum;
|
||||
|
||||
return baseBoxNum + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, todayDate,
|
||||
Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()), systemType);
|
||||
|
||||
// // 获取今天开始时间
|
||||
// Date todayDate = DateUtils.getStartTime(new Date());
|
||||
// // 2025.03.18 调整需求,升级走当天累计,当天买的所有都进行积累,24点之后则重新累积(手动升级前后的盒数都算累计)
|
||||
// int baseBoxNum = 0;
|
||||
//
|
||||
// // 是否有升级记录
|
||||
// List<CuMemberLevel> memberLevelList = iCuMemberDetailServiceApi.getUpgradeList(cuMember.getPkId()).getData();
|
||||
// if (CollectionUtil.isNotEmpty(memberLevelList)) {
|
||||
// // 如果今天有手动升级记录,则以手动升级记录的盒数 + 今天购买的盒数做累计
|
||||
// // 最新一次的手动升级记录
|
||||
// Optional<CuMemberLevel> lastManualOptional = memberLevelList.stream().filter(tmpGrade -> tmpGrade.getUpType().equals(EUpgradeType.MANUAL_UPGRADE.getValue())).findFirst();
|
||||
// if (lastManualOptional.isPresent() && lastManualOptional.get().getUpgradeTime().compareTo(todayDate) >= 0) {
|
||||
// // 存在今天的手动升级记录
|
||||
// CuMemberLevel lastMemberLevel = lastManualOptional.get();
|
||||
// BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get();
|
||||
// baseBoxNum = lastUpdateGrade.getBoxNumber();
|
||||
// } else {
|
||||
// // 如果今天没有手动升级记录,则以今天以前最后一条升级记录的盒数 + 今天购买的盒数做累计
|
||||
// memberLevelList = memberLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(todayDate) < 0).collect(Collectors.toList());
|
||||
// if (CollectionUtil.isNotEmpty(memberLevelList)) {
|
||||
// CuMemberLevel lastMemberLevel = memberLevelList.get(0);
|
||||
// BdGrade lastUpdateGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(lastMemberLevel.getNewLevel())).findFirst().get();
|
||||
// baseBoxNum = lastUpdateGrade.getBoxNumber();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return baseBoxNum + saOrderItemsService.getRetailWaresQuantityNew(cuMember.getPkId(), boxProductList, todayDate,
|
||||
// Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()), systemType);
|
||||
|
||||
|
||||
// // 是否当天购买(当天走累计升级,非当天走一次性补差)
|
||||
|
|
|
@ -1183,7 +1183,9 @@
|
|||
<foreach collection="waresCodeList" item="items" open="(" close=")" separator=",">
|
||||
#{items}
|
||||
</foreach>
|
||||
and to_char(so.pay_time, 'yyyy-mm-dd') = to_char(#{payTime}, 'yyyy-mm-dd')
|
||||
<if test="payTime != null">
|
||||
and so.pay_time > #{payTime}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 订单发货数量 -->
|
||||
|
|
Loading…
Reference in New Issue