forked from angelo/java-retail-app
## 奖金结算时,如果当天没有订单修改结算等级、修改激活状态也会进行更新;
This commit is contained in:
parent
f651cd8155
commit
f54cc66b50
|
@ -28,6 +28,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
* 根据会员查询会员上的所有网体
|
||||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);
|
||||
|
||||
CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId);
|
||||
|
||||
/**
|
||||
|
@ -35,4 +36,13 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
*/
|
||||
void mergeCuMemberRetailRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);
|
||||
|
||||
/**
|
||||
* 更新会员激活状态
|
||||
*
|
||||
* @param rangeTableName
|
||||
* @param pkMemberList
|
||||
* @return
|
||||
*/
|
||||
int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List<Long> pkMemberList);
|
||||
|
||||
}
|
||||
|
|
|
@ -32,4 +32,13 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
*/
|
||||
void updateCuMemberRetailRange(String settleTableName, Map<Long, CuMemberRetailRangeExt> cuMemberTreeMap);
|
||||
|
||||
/**
|
||||
* 更新会员激活状态
|
||||
*
|
||||
* @param rangeTableName
|
||||
* @param pkMemberList
|
||||
* @return
|
||||
*/
|
||||
int updateMemberEnable(String rangeTableName, List<Long> pkMemberList);
|
||||
|
||||
}
|
||||
|
|
|
@ -61,4 +61,10 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
cuMemberTreeMap.forEach((key, value) -> cuMemberTreeList.add(value));
|
||||
return cuMemberBonusSettle.handleCutList(cuMemberTreeList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateMemberEnable(String rangeTableName, List<Long> pkMemberList) {
|
||||
return baseMapper.updateMemberEnable(rangeTableName, pkMemberList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
||||
|
@ -90,14 +91,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
// 更新网体
|
||||
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth);
|
||||
// 更新会员手动升级
|
||||
iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period);
|
||||
|
||||
// 当期的手动激活的记录列表
|
||||
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate);
|
||||
List<CuMemberServiceLog> activateList = this.getActivateList(settleStartDate);
|
||||
|
||||
if (retailOrderList.size() > 0) {
|
||||
// 会员购买升级记录
|
||||
Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>();
|
||||
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
|
||||
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.queryCuMemberLevel(settleStartDate, settleEndDate);
|
||||
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
|
||||
|
||||
// 会员的自动升级记录
|
||||
|
@ -105,6 +108,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate);
|
||||
autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel));
|
||||
|
||||
Map<Long, Date> activateMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(activateList)) {
|
||||
activateMap = activateList.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
CuMemberServiceLog::getPkMember,
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
|
||||
optional -> optional.get().getCreationTime()
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
// 会员结算map(key:会员ID,value:结算扩展)
|
||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
|
||||
// 按照血缘,查询该会员所有伞上会员
|
||||
|
@ -119,8 +134,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 等级map(key:等级ID,value:等级对象)
|
||||
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
|
||||
// 等级列表
|
||||
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
|
||||
for (BdGrade bdGrade : retaiGradeList) {
|
||||
List<BdGrade> retailGradeList = bonusConfigDTO.getRetaiGradeList();
|
||||
for (BdGrade bdGrade : retailGradeList) {
|
||||
gradeIdMap.put(bdGrade.getPkId(), bdGrade);
|
||||
}
|
||||
// 配送收益配置
|
||||
|
@ -133,10 +148,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
// 上面更新网体,按会员表是否激活进行处理
|
||||
for (SaOrderExt saOrderExt : retailOrderList) {
|
||||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
// 注册、升级才能算激活状态
|
||||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
|
||||
}
|
||||
}
|
||||
|
@ -147,7 +162,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
// 订单指定产品盒数(计算等级使用)
|
||||
BigDecimal boxNum = saOrderExt.getBoxNum();
|
||||
|
||||
// 个人累计消费pv
|
||||
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||
// 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
||||
|
@ -212,6 +226,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cuMemberBonusRangeList.size() > 0) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) {
|
||||
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
|
||||
|
@ -228,6 +243,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
// 更新网体
|
||||
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
|
||||
} else {
|
||||
// 当日没有订单,也需要处理手动激活
|
||||
if (CollectionUtil.isNotEmpty(activateList)) {
|
||||
List<Long> pkMemberList = activateList.stream().map(CuMemberServiceLog::getPkMember).collect(Collectors.toList());
|
||||
iCuMemberRetailRangeService.updateMemberEnable(rangeTableName, pkMemberList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -713,21 +734,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
|
||||
/**
|
||||
* 获取手动激活map
|
||||
* 获取手动激活List
|
||||
*
|
||||
* @param settleStartDate
|
||||
* @return
|
||||
*/
|
||||
private Map<Long, Date> getActivateMap(Date settleStartDate) {
|
||||
private List<CuMemberServiceLog> getActivateList(Date settleStartDate) {
|
||||
// 当期的手动激活的记录列表
|
||||
List<CuMemberServiceLog> activateList = iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData();
|
||||
return activateList.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
CuMemberServiceLog::getPkMember,
|
||||
Collectors.collectingAndThen(
|
||||
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
|
||||
optional -> optional.get().getCreationTime()
|
||||
)
|
||||
));
|
||||
return iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,12 +14,12 @@ import java.util.List;
|
|||
public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {
|
||||
|
||||
/**
|
||||
* 回退会员等级
|
||||
* 更新会员手动升级
|
||||
*/
|
||||
void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
|
||||
void updateCuMemberManualGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 查询会员等级
|
||||
* 查询会员升级记录
|
||||
*/
|
||||
List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate,
|
||||
|
|
|
@ -13,12 +13,14 @@ import java.util.List;
|
|||
public interface ICuMemberGradeService extends IService<CuMemberGrade> {
|
||||
|
||||
/**
|
||||
* 回退极差奖衔,每日重新结算,先把等级回退到前一天
|
||||
*
|
||||
* @param period 结算期间
|
||||
* @param rangeTableName 结算表
|
||||
* 更新会员手动升级
|
||||
*/
|
||||
List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName);
|
||||
void updateCuMemberManualGrade(String rangeTableName, Integer period);
|
||||
|
||||
/**
|
||||
* 回退极差奖衔,每日重新结算,先把等级回退到前一天
|
||||
*/
|
||||
List<CuMemberLevel> queryCuMemberLevel(Date startDate, Date endDate);
|
||||
|
||||
/**
|
||||
* 自动升级列表
|
||||
|
|
|
@ -18,9 +18,13 @@ import java.util.List;
|
|||
public class CuMemberGradeServiceImpl extends ServiceImpl<CuMemberGradeMapper, CuMemberGrade> implements ICuMemberGradeService {
|
||||
|
||||
@Override
|
||||
public List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) {
|
||||
public void updateCuMemberManualGrade(String rangeTableName, Integer period) {
|
||||
// 根据手动升级记录,更新日结表
|
||||
baseMapper.updateCuMemberGrade(rangeTableName, period);
|
||||
baseMapper.updateCuMemberManualGrade(rangeTableName, period);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberLevel> queryCuMemberLevel(Date startDate, Date endDate) {
|
||||
// 购买升级记录列表
|
||||
return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue());
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
recommend_num = 0,
|
||||
team_num = 0,
|
||||
enable_status = 1,
|
||||
pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
|
||||
pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
|
||||
region_address = 0,
|
||||
big_box_num = 0,
|
||||
small_box_num = 0,
|
||||
|
@ -203,57 +203,65 @@
|
|||
where ba.del_flag = 0
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberRetailRangeByMemberId"
|
||||
resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
|
||||
SELECT
|
||||
a.pk_member,
|
||||
a.member_code,
|
||||
a.member_name,
|
||||
a.pk_parent,
|
||||
a.pk_settle_country,
|
||||
a.category,
|
||||
a.account_status,
|
||||
a.pk_grade,
|
||||
a.income_status,
|
||||
a.pay_time,
|
||||
a.pk_rate,
|
||||
a.system_type,
|
||||
a.income_status,
|
||||
a.pk_country,
|
||||
a.pk_settle_country,
|
||||
a.enable_status,
|
||||
new_box_num,
|
||||
consume_box_num,
|
||||
month_box_num,
|
||||
new_consume_pv,
|
||||
consume_pv,
|
||||
month_consume_pv,
|
||||
team_new_box_num,
|
||||
team_box_num,
|
||||
team_month_box_num,
|
||||
team_new_pv,
|
||||
team_consume_pv,
|
||||
team_month_pv,
|
||||
team_new_amount,
|
||||
team_consume_amount,
|
||||
team_month_amount,
|
||||
recommend_num,
|
||||
team_num,
|
||||
ba.grade_value,
|
||||
ba.grade_name,
|
||||
a.big_box_num,
|
||||
a.small_box_num,
|
||||
a.big_team_pv,
|
||||
a.small_team_pv,
|
||||
br.name country_name
|
||||
FROM
|
||||
${tableName} a
|
||||
INNER JOIN bd_grade ba ON a.pk_grade = ba.pk_id
|
||||
LEFT JOIN bd_area br ON br.pk_id = a.region_address
|
||||
AND br.del_flag = 0
|
||||
WHERE
|
||||
ba.del_flag = 0
|
||||
SELECT a.pk_member,
|
||||
a.member_code,
|
||||
a.member_name,
|
||||
a.pk_parent,
|
||||
a.pk_settle_country,
|
||||
a.category,
|
||||
a.account_status,
|
||||
a.pk_grade,
|
||||
a.income_status,
|
||||
a.pay_time,
|
||||
a.pk_rate,
|
||||
a.system_type,
|
||||
a.income_status,
|
||||
a.pk_country,
|
||||
a.pk_settle_country,
|
||||
a.enable_status,
|
||||
new_box_num,
|
||||
consume_box_num,
|
||||
month_box_num,
|
||||
new_consume_pv,
|
||||
consume_pv,
|
||||
month_consume_pv,
|
||||
team_new_box_num,
|
||||
team_box_num,
|
||||
team_month_box_num,
|
||||
team_new_pv,
|
||||
team_consume_pv,
|
||||
team_month_pv,
|
||||
team_new_amount,
|
||||
team_consume_amount,
|
||||
team_month_amount,
|
||||
recommend_num,
|
||||
team_num,
|
||||
ba.grade_value,
|
||||
ba.grade_name,
|
||||
a.big_box_num,
|
||||
a.small_box_num,
|
||||
a.big_team_pv,
|
||||
a.small_team_pv,
|
||||
br.name country_name
|
||||
FROM ${tableName} a
|
||||
INNER JOIN bd_grade ba ON a.pk_grade = ba.pk_id
|
||||
LEFT JOIN bd_area br ON br.pk_id = a.region_address
|
||||
AND br.del_flag = 0
|
||||
WHERE ba.del_flag = 0
|
||||
and a.pk_member = #{memberId}
|
||||
</select>
|
||||
|
||||
<!-- 更新会员激活状态 -->
|
||||
<update id="updateMemberEnable">
|
||||
update ${rangeTableName} cmr
|
||||
set cmr.enable_status = 0
|
||||
where cmr.pk_member in
|
||||
<foreach collection="pkMemberList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -2,24 +2,8 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.detail.mapper.CuMemberGradeMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberGrade" type="com.hzs.common.domain.member.detail.CuMemberGrade">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="UP_TYPE" property="upType"/>
|
||||
<result column="OLD_LEVEL" property="oldLevel"/>
|
||||
<result column="NEW_LEVEL" property="newLevel"/>
|
||||
<result column="REMARK" property="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="updateCuMemberGrade">
|
||||
<!-- 更新会员手动升级 -->
|
||||
<update id="updateCuMemberManualGrade">
|
||||
merge into ${rangeTableName} a
|
||||
using (
|
||||
select a.pk_member, max(a.new_level) pk_grade
|
||||
|
@ -40,6 +24,7 @@
|
|||
a.pk_grade = b.pk_grade
|
||||
</update>
|
||||
|
||||
<!-- 查询会员升级记录 -->
|
||||
<select id="queryCuMemberLevel" resultType="com.hzs.common.domain.member.detail.CuMemberLevel">
|
||||
select *
|
||||
from cu_member_level
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package com.hzs.member.detail.provider;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
|
||||
import com.hzs.common.domain.member.detail.CuMemberServiceLogExt;
|
||||
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
|
||||
import com.hzs.member.detail.service.ICuMemberServiceLogService;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
|
|
Loading…
Reference in New Issue