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