## 等级只保留会员一个等级;

This commit is contained in:
cabbage 2025-09-09 15:02:29 +08:00
parent e02f2c8f9f
commit 1c3d4738f3
39 changed files with 73 additions and 1061 deletions

View File

@ -25,12 +25,4 @@ public interface IAwardsServiceApi {
* 根据国家获取该国家的奖衔
*/
R<Map<String, BdAwards>> getAwards();
/**
* 根据所属国家查询奖衔
*
* @param pkCountry
* @return
*/
R<List<BdAwards>> queryByPkCountryAwards(Integer pkCountry);
}

View File

@ -61,13 +61,6 @@ public interface IGradeServiceApi {
*/
R<List<GradeDTO>> selectGradeAll(Integer dataCountry);
/**
* 根据国家查询等级配置列表
*
* @param pkCountry 国家
*/
R<List<BdGrade>> queryGrowUpFootmarkGrade(Integer pkCountry);
/**
* 查询全部的等级
*

View File

@ -219,11 +219,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberAwards.getOldLevel() < cuMemberRetailRangeExt.getPkAwards()) {
cuMemberRetailRangeExt.setPkAwards(cuMemberAwards.getOldLevel());
}
if (cuMemberRetailRangeExt.getGradeValue() == EGrade.S_VIP.getValue() && cuMemberRetailRangeExt.getPkAwards() < 11) {
// 如果是合伙人奖衔肯定得有不能置为无
cuMemberRetailRangeExt.setPkAwards(11);
continue;
}
cuMemberAwards.setNewLevel(cuMemberAwards.getOldLevel());
cuMemberAwardsList.add(cuMemberAwards);
}
@ -474,7 +469,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
if (retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
@ -624,7 +619,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
if (retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {

View File

@ -29,9 +29,7 @@ import com.hzs.member.account.vo.CuMemberWithdrawVO;
import com.hzs.member.account.vo.CuMemberWithdrawalAddVO;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.IWithdrawalServiceApi;
import com.hzs.system.config.dto.GradeDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -47,27 +45,19 @@ import java.util.List;
public class ApiCuMemberWithdrawController extends BaseController {
@Autowired
ICuMemberBankService cuMemberBankService;
private ICuMemberBankService cuMemberBankService;
@Autowired
ICuMemberService cuMemberService;
private ICuMemberService cuMemberService;
@Autowired
private ICuMemberBaseService baseService;
@Autowired
private ICuMemberAccountService cuMemberAccountService;
@Autowired
private ICuMemberWithdrawService cuMemberWithdrawService;
@DubboReference
IWithdrawalServiceApi withdrawalServiceApi;
@Autowired
ICuMemberBaseService baseService;
@Autowired
ICuMemberAccountService cuMemberAccountService;
@Autowired
ICuMemberWithdrawService cuMemberWithdrawService;
@DubboReference
IGradeServiceApi gradeServiceApi;
/**
* 提现时展示信息
*
@ -140,18 +130,12 @@ public class ApiCuMemberWithdrawController extends BaseController {
}
Integer accountsType = baseService.getAccountValueById(pkAccount);
if (pkCountry.equals(CountryConstants.CHINA_COUNTRY)) {
//结算等级为1 (目前是会员)不允许提现
GradeDTO gradeDTO = gradeServiceApi.getGradeByGradeValue(EGrade.START_UP.getValue(), pkCountry).getData();
if (cuMemberLoginExt.getPkSettleGrade().equals(gradeDTO.getPkId())) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.NOT_WITHDRAWAL_UPGRADE));
}
//校验是否实名
Boolean existRealName = baseService.isExistRealName(pkMember, pkCountry, EBusinessModule.WITHDRAWAL.getValue());
if (!existRealName) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.REAL_NAME_NOT_EXIST));
}
}
//查询账户信息
CuMemberAccount cuMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(pkMember);
//是否可提现
@ -185,10 +169,10 @@ public class ApiCuMemberWithdrawController extends BaseController {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.ENTER_INTEGER_VALUE));
}
if (null != cashAmount && cashAmount.compareTo(minAmount) < 0) {
if (cashAmount.compareTo(minAmount) < 0) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_AMOUNT_GREATER_MINIMUM_AMOUNT));
}
if (null != cashAmount && cashAmount.compareTo(maxAmount) > 0) {
if (cashAmount.compareTo(maxAmount) > 0) {
return AjaxResult.error(TransactionUtils.getContent(FinanceMsgConstants.WITHDRAWAL_AMOUNT_LESS_MAXIMUM_AMOUNT));
}
//校验倍数

View File

@ -1,150 +0,0 @@
package com.hzs.member.base.controller.api;
import cn.hutool.core.bean.BeanUtil;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.ESystemType;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.vo.AwardsVo;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.GradeDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.*;
@RestController
@RequestMapping("/api/member-footmark")
public class MemberFootmarkController {
@DubboReference
IGradeServiceApi gradeServiceApi;
@DubboReference
IAwardsServiceApi awardsServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
@Autowired
private ICuMemberService memberService;
/**
* 成长之路 奖衔
*/
@GetMapping("/grow-up-footmark-awards")
public AjaxResult growUpFootmarkAwards() {
Integer pkCountry = SecurityUtils.getPkCountry();
Long userId = SecurityUtils.getUserId();
CuMember member = memberService.getMember(userId);
Integer pkAwards = member.getPkAwards();
R<CurrencyDTO> currencyDto = currencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
CurrencyDTO currency = currencyDto.getData();
R<BdAwards> awardsOne = awardsServiceApi.getAwardsOne(pkAwards);
List<BdAwards> awardsList = awardsServiceApi.queryByPkCountryAwards(pkCountry).getData();
// 奖衔级别
Integer awardsValue = awardsOne.getData().getAwardsValue();
// 子级名称
String childLevelName = "";
// 累计业绩
BigDecimal achievement = BigDecimal.ZERO;
// 用户头像
String thisAvatarUrl = "";
List<AwardsVo> resultList = new ArrayList<>();
for (BdAwards bdAwards : awardsList) {
// 下一级别
if (bdAwards.getAwardsValue() == (awardsValue - 5)) {
childLevelName = bdAwards.getAwardsName();
}
if (bdAwards.getAwardsValue() > awardsValue) {
bdAwards.setColor("#C0C1C1");
}
if (pkAwards.equals(bdAwards.getPkId())) {
achievement = bdAwards.getCommunityCheck();
thisAvatarUrl = bdAwards.getImage();
}
AwardsVo awardsVo = BeanUtil.copyProperties(bdAwards, AwardsVo.class);
// 小区业绩
BigDecimal communityCheck = bdAwards.getCommunityCheck().multiply(currency.getInExchangeRate());
if (communityCheck.compareTo(new BigDecimal(10000)) > 0) {
awardsVo.setCommunityCheckStr(communityCheck.divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString() + "");
} else {
awardsVo.setCommunityCheckStr(communityCheck + "");
}
resultList.add(awardsVo);
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("childLevelName", childLevelName);
// 排序
resultMap.put("awardsList", new ArrayList<>(resultList));
resultMap.put("thisAwardsName", awardsOne.getData().getAwardsName());
resultMap.put("thisPkAwards", awardsOne.getData().getPkId());
resultMap.put("achievement", achievement);
resultMap.put("thisAvatarUrl", thisAvatarUrl);
return AjaxResult.success(resultMap);
}
/**
* 成长之路 等级
*/
@GetMapping("/grow-up-footmark-grade")
public AjaxResult growUpFootmarkGrade() {
Integer pkCountry = SecurityUtils.getPkCountry();
Long userId = SecurityUtils.getUserId();
CuMember member = memberService.getMember(userId);
Integer grade = member.getPkSettleGrade();
// 当前等级
String thisGradeName = "";
// 用户头像
String thisAvatarUrl = "";
// 色值
String color = "";
R<CurrencyDTO> currencyDate = currencyServiceApi.getCurrency(pkCountry);
CurrencyDTO currency = currencyDate.getData();
R<GradeDTO> gradeDto = gradeServiceApi.getGrade(grade);
List<BdGrade> gradeList = gradeServiceApi.queryGrowUpFootmarkGrade(pkCountry).getData();
for (BdGrade g : gradeList) {
if (grade.equals(g.getPkId())) {
thisGradeName = g.getGradeName();
thisAvatarUrl = g.getImage();
color = g.getColor();
}
if (g.getGradeValue() > gradeDto.getData().getGradeValue()) {
g.setColor("#C0C1C1");
}
// 计算人民币业绩
g.setStartValue(g.getStartValue().multiply(currency.getInExchangeRate()));
}
Map<String, Object> resultMap = new HashMap<>();
// 颜色
resultMap.put("color", color);
// 等级
resultMap.put("gradeList", gradeList.stream());
// 当前等级
resultMap.put("thisGradeName", thisGradeName);
// 编号
resultMap.put("memberCode", member.getMemberCode());
// 会员名称
resultMap.put("memberName", member.getMemberName());
// 业绩
resultMap.put("achievement", member.getConsumeAchieve());
// 头像
resultMap.put("thisAvatarUrl", thisAvatarUrl);
return AjaxResult.success(resultMap);
}
}

View File

@ -911,36 +911,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
public Boolean normalRevokeOrder(Long pkApprove, SaOrderExt saOrder, CuMember cuMember, BusinessCommissionDTO businessCommissionDTO) {
deductCancelOrderCost(businessCommissionDTO);
if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType()) {
// 复购订单
// 会员等级发生变化新等级需要处理
BdGrade newGrade = saOrder.getNewGrade();
if (null != cuMember && null != newGrade) {
// 更新会员等级
cuMember.setPkSettleGrade(newGrade.getPkId());
}
// 处理升级记录添加删除
List<CuMemberLevel> deleteLevelList = saOrder.getDeleteLevelList();
if (CollectionUtil.isNotEmpty(deleteLevelList)) {
cuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberLevel::getModifiedTime, new Date())
.set(CuMemberLevel::getPkModified, pkApprove)
.in(CuMemberLevel::getPkId, deleteLevelList.stream().map(CuMemberLevel::getPkId).collect(Collectors.toList()))
);
}
List<CuMemberLevel> createLevelList = saOrder.getCreateLevelList();
if (CollectionUtil.isNotEmpty(createLevelList)) {
// 校验插入的升级时间要小于V4V5的升级时间
CuMemberLevel tmpLevel = cuMemberLevelService.getLevelByGradeValue(saOrder.getPkMember(), EGrade.VIP.getValue(), saOrder.getPayTime(), saOrder.getPkCountry());
if (null != tmpLevel) {
createLevelList = createLevelList.stream().filter(tmp -> tmp.getUpgradeTime().compareTo(tmpLevel.getUpgradeTime()) < 0).collect(Collectors.toList());
}
cuMemberLevelService.insertBatch(createLevelList);
}
}
// 更新会员标记如果是则更新会员信息
if (saOrder.getUpdateFlag() != null && EYesNo.YES.getIntValue() == saOrder.getUpdateFlag()) {
if (null != cuMember) {
@ -949,7 +919,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
}
// 部分撤单 todo 发货后邮费不退未发货退邮费
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
// 部分撤单

View File

@ -2329,7 +2329,7 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
@Override
public CuMember shareRegisterMember(ShareRegisterParam registerParam) {
// 处理等级
GradeDTO gradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.START_UP.getValue(), CountryConstants.CHINA_COUNTRY).getData();
GradeDTO gradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.MEMBER.getValue(), CountryConstants.CHINA_COUNTRY).getData();
if (null == gradeDTO) {
return null;
}

View File

@ -5,7 +5,6 @@ import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@ -29,18 +28,4 @@ public interface CuMemberLevelMapper extends BaseMapper<CuMemberLevel> {
*/
int insertGradeBatch(@Param("memberGradeList") List<CuMemberGrade> memberGradeList);
/**
* 查询会员升级记录
*
* @param pkMember 会员ID
* @param gradeValue 等级值
* @param queryTime 查询开始时间可为空
* @param pkCountry 所属国家
* @return
*/
CuMemberLevel getLevelByGradeValue(@Param("pkMember") Long pkMember,
@Param("gradeValue") Integer gradeValue,
@Param("queryTime") Date queryTime,
@Param("pkCountry") Integer pkCountry);
}

View File

@ -46,15 +46,4 @@ public interface ICuMemberLevelService extends IService<CuMemberLevel> {
*/
List<CuMemberLevel> listMemberLevel(Long pkMember, Long pkOrder);
/**
* 查询会员升级记录
*
* @param pkMember 会员ID
* @param gradeValue 等级值
* @param queryTime 查询开始时间可为空
* @param pkCountry 所属国家
* @return
*/
CuMemberLevel getLevelByGradeValue(Long pkMember, Integer gradeValue, Date queryTime, Integer pkCountry);
}

View File

@ -48,9 +48,4 @@ public class CuMemberLevelServiceImpl extends ServiceImpl<CuMemberLevelMapper, C
);
}
@Override
public CuMemberLevel getLevelByGradeValue(Long pkMember, Integer gradeValue, Date queryTime, Integer pkCountry) {
return baseMapper.getLevelByGradeValue(pkMember, gradeValue, queryTime, pkCountry);
}
}

View File

@ -857,9 +857,6 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
businessVO.setBusinessMemberList(businessMemberVOList);
for (BusinessMemberVO memberVO : businessMemberListUpdate) {
CuMemberExt memberExt = cuMemberService.getMemberById(memberVO.getPkMember());
if(!gradesMap.get(EGrade.S_VIP.getValue()).getPkId().equals(Integer.parseInt(memberVO.getNewValue()))){
continue;
}
// 没有奖衔
Integer memberAwardsValue = awardsList.getData().stream().filter(o -> o.getPkId().equals(memberExt.getPkAwards())).findFirst().get().getAwardsValue();
if(ObjectUtil.isNotEmpty(memberExt) && EAwards.HEADER.getValue() > memberAwardsValue){

View File

@ -2,46 +2,20 @@ package com.hzs.retail.member.controller.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.constant.msg.AreaConstants;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.enums.ENoticeWebsiteType;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.PageUtils;
import com.hzs.common.core.utils.sign.Base64Util;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
import com.hzs.retail.member.service.ICuMemberRetailRegionService;
import com.hzs.retail.member.service.IMemberRetailService;
import com.hzs.retail.member.vo.*;
import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.GradeDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@ -57,15 +31,6 @@ public class RetailMemberController extends BaseController {
private ICuMemberService iCuMemberService;
@Autowired
private IMemberRetailService iMemberRetailService;
@Autowired
private ICuMemberRetailRegionService iCuMemberRetailRegionService;
@Autowired
private ICuMemberRetailAchieveService retailAchieveService;
@DubboReference
IAreaServiceApi iAreaServiceApi;
@DubboReference
IGradeServiceApi gradeServiceApi;
/**
* 获取登录会员信息
@ -90,247 +55,6 @@ public class RetailMemberController extends BaseController {
return AjaxResult.success(result);
}
/**
* 获取会员收益区域
*
* @return
*/
@GetMapping("/get-region")
public AjaxResult getRegion() {
Long userId = SecurityUtils.getUserId();
Integer systemType = SecurityUtils.getSystemType();
Integer pkCountry = SecurityUtils.getPkCountry();
CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType);
LambdaQueryWrapper<CuMemberRetailRegion> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberRetailRegion::getPkMember, userId);
int countNum = iCuMemberRetailRegionService.count(queryWrapper);
boolean notFirst = countNum > 0;
log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt));
if (null != cuMemberRetailRegionExt) {
// 已自选区域或者已后台指定
if (null != cuMemberRetailRegionExt.getPkId()) {
// 达到条件也选择区域需要进行显示
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue())
.province(cuMemberRetailRegionExt.getProvince())
.provinceVal(cuMemberRetailRegionExt.getProvinceVal())
.city(cuMemberRetailRegionExt.getCity())
.cityVal(cuMemberRetailRegionExt.getCityVal())
.county(cuMemberRetailRegionExt.getCounty())
.countyVal(cuMemberRetailRegionExt.getCountyVal())
.build());
}
// 未自选或未后台指定 验证是否激活 未激活不允许选
// getIsRegion - 后台业务特殊标记,非后台办理过的为1, 后台办理过的为0,当为0时, 不设定任何条件,直接可选收益区域
if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) {
// 2024.12.30 添加需求指定会员可以进行区域选择
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue())
.build());
}
if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()) {
GradeDTO grade = gradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), pkCountry).getData();
if (notFirst) {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;
CurrentMonthVO currentMonthVO = retailAchieveService.getCurrentMonthPV(today.format(formatter), userId, pkCountry, systemType);
if (ObjectUtil.isNotEmpty(currentMonthVO)
&& currentMonthVO.getTotalCurrentMonthPV().compareTo(SysConstants.TOTAL_AREA_PV) >= 0
&& currentMonthVO.getSmallCurrentMonthPV().compareTo(SysConstants.SMALL_AREA_PV) >= 0
) {
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue())
.build());
}
} else {
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue())
.build());
}
// if(ObjectUtil.isNotEmpty(retailAchieve.getArealPv())
// && result.getTotalPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.TOTAL_AREA_PV) >= 0
// && result.getSmallRangeTotalPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.SMALL_AREA_PV) >=0
// ){
//
// return AjaxResult.success(RetailMemberRegionVO.builder()
// .regionStatus(EYesNo.YES.getIntValue())
// .build());
// }
}
// 达到条件但是没有选择区域需要弹窗选择区域
// 验证伞下业绩+自己是否累计30W
/*
2025年6月11日 取消其他验证
// 2025.01.11 调整需求当前会员必须有效至少下过一单
if (iCuMemberRetailRegionService.getOrderCount(userId, systemType, BoxProductUtil.getBoxProductListBySystemType(systemType)) == 0) {
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.NO.getIntValue())
.build());
}
// 2025.02.21 需求2025.03.21 按正式规则执行V5实单非注水盒数达标 月大区30万+小区10万可选择区域
R<CuMemberRetail> checkResult = iMemberSettleBonusApi.queryValidateBoxOrAchieve(userId);
if (checkResult.isSuccess()) {
if (checkResult.getData().getValidateFlag()) {
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.YES.getIntValue())
.build());
}
}
*/
}
// 没达到条件不需要显示区域
return AjaxResult.success(RetailMemberRegionVO.builder()
.regionStatus(EYesNo.NO.getIntValue())
.build());
}
/**
* 设置会员收益区域
*
* @param param 设置参数
* @return
*/
@RepeatSubmitSimple
@PostMapping("/set-region")
public AjaxResult setRegion(@Valid @RequestBody RetailMemberRegionParam param) {
Long userId = SecurityUtils.getUserId();
Integer systemType = SecurityUtils.getSystemType();
Integer pkCountry = SecurityUtils.getPkCountry();
boolean canSet = false;
CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType);
log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt));
if (null != cuMemberRetailRegionExt) {
if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) {
canSet = true;
}
if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()) {
LambdaQueryWrapper<CuMemberRetailRegion> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberRetailRegion::getPkMember, userId);
int countNum = iCuMemberRetailRegionService.count(queryWrapper);
boolean notFirst = countNum > 0;
if (notFirst) {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;
CurrentMonthVO currentMonthVO = retailAchieveService.getCurrentMonthPV(today.format(formatter), userId, pkCountry, systemType);
if (ObjectUtil.isNotEmpty(currentMonthVO)
&& currentMonthVO.getTotalCurrentMonthPV().compareTo(SysConstants.TOTAL_AREA_PV) >= 0
&& currentMonthVO.getSmallCurrentMonthPV().compareTo(SysConstants.SMALL_AREA_PV) >= 0
) {
canSet = true;
}
} else {
canSet = true;
}
}
}
if (!canSet) {
return AjaxResult.error("还未达到选择收益区域条件");
}
if (param.getCounty().equals(0) || param.getCity().equals(0)) {
// 区为0 市为0没有选择区或者没有选择市
// 香港澳门只有省台湾有省
BdArea province = iAreaServiceApi.getArea(param.getProvince()).getData();
if (null == province) {
return AjaxResult.error("选择区域省不存在,请重新选择");
}
if (param.getCounty().equals(0)
&& !AreaConstants.XIANG_GANG.equals(province.getCode())
&& !AreaConstants.AO_MEN.equals(province.getCode())
&& !AreaConstants.TAI_WAN.equals(province.getCode())) {
// 区为0不是香港港门台湾则需要提示
return AjaxResult.error("请选择区");
}
if (param.getCity().equals(0)
&& !AreaConstants.XIANG_GANG.equals(province.getCode())
&& !AreaConstants.AO_MEN.equals(province.getCode())) {
// 市为0不是香港港门则需要提示
return AjaxResult.error("请选择市");
}
}
// 校验市是否存在
if (!param.getCity().equals(0)) {
BdArea city = iAreaServiceApi.getArea(param.getCity()).getData();
if (null == city) {
return AjaxResult.error("选择区域市不存在,请重新选择");
}
}
// 校验区是否存在
if (!param.getCounty().equals(0)) {
BdArea county = iAreaServiceApi.getArea(param.getCounty()).getData();
if (null == county) {
return AjaxResult.error("选择区域区不存在,请重新选择");
}
}
// 校验区域是否被占用
// CuMemberRetailRegion cuMemberRetailRegion = iCuMemberRetailRegionService.getOne(Wrappers.<CuMemberRetailRegion>lambdaQuery()
// .eq(CuMemberRetailRegion::getProvince, param.getProvince())
// .eq(CuMemberRetailRegion::getCity, param.getCity())
// .eq(CuMemberRetailRegion::getCounty, param.getCounty())
// .eq(CuMemberRetailRegion::getEffective, EYesNo.YES.getIntValue())
// .eq(CuMemberRetailRegion::getSystemType, systemType)
// );
// if (null != cuMemberRetailRegion) {
// if (userId.equals(cuMemberRetailRegion.getPkMember())) {
// // 当前收益区域就是当前会员不需要处理
// return AjaxResult.success();
// } else {
// return AjaxResult.error("当前区域已经被占用");
// }
// }
int cuMemberRetailRegion = iCuMemberRetailRegionService.validateBindCount(param, EYesNo.YES.getIntValue(), SecurityUtils.getSystemType(), userId);
if (cuMemberRetailRegion > 0) {
return AjaxResult.error("当前区域已经被占用");
}
param.setPkId(cuMemberRetailRegionExt.getPkId());
param.setPkMember(userId);
param.setPkCountry(pkCountry);
param.setSource(ENoticeWebsiteType.MEMBER.getValue());
param.setSystemType(systemType);
String str = iCuMemberRetailRegionService.setRegion(param);
if (null == str) {
return AjaxResult.success();
}
return AjaxResult.error(str);
}
/**
* 收益区域
*
* @return
*/
@GetMapping("/region-tree")
public AjaxResult regionTree() {
PageUtils.clearPage();
List<BdArea> areaList = iCuMemberRetailRegionService.listChooseRegion(SecurityUtils.getSystemType());
if (CollectionUtil.isEmpty(areaList)) {
return AjaxResult.success();
}
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
treeNodeConfig.setDeep(3);
//0表示最顶层的id是0
List<Tree<String>> build = TreeUtil.build(areaList, "0", treeNodeConfig,
(treeNode, tree) -> {
tree.setId(treeNode.getPkId().toString());
tree.setParentId(treeNode.getParent().toString());
tree.setName(treeNode.getName());
});
return AjaxResult.success(build);
}
/**
* 会员推荐列表
*

View File

@ -2,7 +2,6 @@ package com.hzs.retail.member.controller.manage;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
import com.hzs.common.core.enums.*;
@ -26,11 +25,7 @@ import java.util.Date;
import java.util.List;
/**
* @description: 新零售收益区域配置
* @author: zhang jing
* @date: 2024/12/25 12:03
* @param:
* @return:
* 新零售收益区域配置
**/
@RestController
@RequestMapping("/manage/cu-member-retail-region")
@ -39,13 +34,8 @@ public class CuMemberRetailRegionController extends BaseController {
@Autowired
private ICuMemberRetailRegionService cuMemberRetailRegionService;
/**
* @description: 会员收益区域配置
* @author: zhang jing
* @date: 2024/12/25 15:02
* @param: [mrrExt]
* @return: com.hzs.common.core.web.page.TableDataInfo
* 会员收益区域配置
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.SELECT)
@GetMapping("/list")
@ -64,11 +54,7 @@ public class CuMemberRetailRegionController extends BaseController {
}
/**
* @description: 导出会员收益区域配置
* @author: zhang jing
* @date: 2024/12/25 14:59
* @param: [response, mrrExt]
* @return: void
* 导出会员收益区域配置
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.EXPORT)
@PostMapping("/export")
@ -87,11 +73,7 @@ public class CuMemberRetailRegionController extends BaseController {
}
/**
* @description: 未绑定收益区域
* @author: zhang jing
* @date: 2025/1/9 13:54
* @param: []
* @return: com.hzs.common.core.web.domain.AjaxResult
* 未绑定收益区域
**/
@GetMapping("/regionAreaList")
public TableDataInfo regionAreaList() {
@ -101,11 +83,7 @@ public class CuMemberRetailRegionController extends BaseController {
}
/**
* @description: 导出未配置收益区域
* @author: zhang jing
* @date: 2025/1/15 11:05
* @param: [response, mrrExt]
* @return: void
* 导出未配置收益区域
**/
@Log(module = EOperationModule.NOT_USED_REGION_AREA, business = EOperationBusiness.NOT_USED_REGION_AREA, method = EOperationMethod.EXPORT)
@PostMapping("/export-region-area")
@ -116,11 +94,7 @@ public class CuMemberRetailRegionController extends BaseController {
}
/**
* @description:新增会员收益区域
* @author: zhang jing
* @date: 2024/12/25 16:18
* @param: [mrrExt]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 新增会员收益区域
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.INSERT)
@PostMapping("/save")
@ -138,10 +112,6 @@ public class CuMemberRetailRegionController extends BaseController {
Integer pkCountry = SecurityUtils.getPkCountry();
Integer systemType = SecurityUtils.getSystemType();
CuMemberRetailRegionExt cuMemberRetailRegionExt = cuMemberRetailRegionService.getRegionByMember(mrrExt.getPkMember(), EGrade.S_VIP.getValue(), systemType);
if (null == cuMemberRetailRegionExt) {
return AjaxResult.error("还未达到选择收益区域条件");
}
CuMemberRetailRegionExt checkMrrExt = new CuMemberRetailRegionExt();
checkMrrExt.setPkMember(mrrExt.getPkMember());
checkMrrExt.setEffective(EDealerYesNo.YES.getValue());
@ -176,11 +146,7 @@ public class CuMemberRetailRegionController extends BaseController {
/**
* @description: 修改会员收益区域
* @author: zhang jing
* @date: 2024/12/25 16:18
* @param: [mrrExt]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 修改会员收益区域
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.UPDATE)
@PostMapping("/update")
@ -216,11 +182,7 @@ public class CuMemberRetailRegionController extends BaseController {
/**
* @description: 查询会员收益区域
* @author: zhang jing
* @date: 2024/12/25 16:18
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 查询会员收益区域
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.SELECT)
@GetMapping("/getOne/{pkId}")
@ -231,11 +193,7 @@ public class CuMemberRetailRegionController extends BaseController {
/**
* @description: 删除会员收益区域
* @author: zhang jing
* @date: 2024/12/25 16:18
* @param: [pkId]
* @return: com.hzs.common.core.web.domain.AjaxResult
* 删除会员收益区域
**/
@Log(module = EOperationModule.CU_MEMBER_RETAIL_REGION, business = EOperationBusiness.CU_MEMBER_RETAIL_REGION, method = EOperationMethod.DELETE)
@DeleteMapping("/{pkId}")

View File

@ -3,7 +3,6 @@ package com.hzs.retail.member.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.vo.UnboundAreaVO;
import org.apache.ibatis.annotations.Param;
@ -27,14 +26,6 @@ public interface CuMemberRetailRegionMapper extends BaseMapper<CuMemberRetailReg
@Param("gradeValue") Integer gradeValue,
@Param("systemType") Integer systemType);
/**
* 可选择的收益区域
*
* @param systemType 系统类型
* @return
*/
List<BdArea> listChooseRegion(@Param("systemType") Integer systemType, @Param("userId") Long userId);
/**
* 插入收益区域
*

View File

@ -8,11 +8,7 @@ import java.io.Serializable;
import java.util.Date;
/**
* @Description: 新零售会员收益区域入参
* @Author: jiang chao
* @Time: 2024/12/10 15:45
* @Classname: RetailMemberRegionParam
* @PackageName: com.hzs.retail.member.param
* 新零售会员收益区域入参
*/
@Data
public class RetailMemberRegionParam implements Serializable {

View File

@ -70,8 +70,5 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
*/
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
CurrentMonthVO getCurrentMonthPV(String date, Long pkMember, Integer pkCountry, Integer systemType);
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
}

View File

@ -3,7 +3,6 @@ package com.hzs.retail.member.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.vo.UnboundAreaVO;
@ -32,14 +31,6 @@ public interface ICuMemberRetailRegionService extends IService<CuMemberRetailReg
*/
String setRegion(RetailMemberRegionParam param);
/**
* 可选择的收益区域
*
* @param systemType 系统类型
* @return
*/
List<BdArea> listChooseRegion(Integer systemType);
/**
* 未绑定收益区域
**/

View File

@ -361,49 +361,6 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
return result;
}
@Override
public CurrentMonthVO getCurrentMonthPV(String date, Long pkMember, Integer pkCountry, Integer systemType) {
Long userId = SecurityUtils.getUserId();
LocalDate today = LocalDate.now();
String yesterdayDate;
String memberRetailTable = TableNameConstants.CU_MEMBER_RETAIL_S;
if (today.getDayOfMonth() != 1) {
LocalDate previousDay = today.minusDays(1);
yesterdayDate = previousDay.format(DateTimeFormatter.ISO_LOCAL_DATE);
memberRetailTable = getTableNameSpecial4Date(yesterdayDate);
}
String memberSecondTable = getDayTableNameSpecial();
//查询直推会员
List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
pkMemberList.add(userId);
CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder()
.memberRetailTable(memberRetailTable)
.memberRetailSTable(memberSecondTable)
.pkMemberList(pkMemberList).systemType(systemType).build();
List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO);
CuMember cuMember = iCuMemberService.queryMember(userId);
BigAndSmallRangeVO bigAndSmallRangeVO = DataStatisticsUtil.getBigAndSmallRangeVO(statisticsDetailVOList, cuMember);
MarketDynamicsQueryDateParam param = new MarketDynamicsQueryDateParam();
DataStatisticsUtil.setQueryDateParam(param);
param.setCurrentDayTableName(memberSecondTable);
param.setCurrentMonthTableName(memberRetailTable);
param.setLastMonthTableName(getDayTableName(param.getLastMonthDate()));
List<MarketDynamicsDetailVO> detailVOList = baseMapper.getMarketDynamicsDetail(param);
BigDecimal totalMouthPV = detailVOList.stream()
.map(MarketDynamicsDetailVO::getCurrentMonthPv)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal bigMouthPV = BigDecimal.ZERO;
MarketDynamicsDetailVO bigRange = detailVOList.stream().filter(vo -> {
assert bigAndSmallRangeVO != null;
return vo.getPkId().equals(bigAndSmallRangeVO.getBigRangeId());
}).findFirst().orElse(null);
if (ObjectUtil.isNotEmpty(bigRange)) {
bigMouthPV = bigRange.getCurrentMonthPv();
}
BigDecimal smallMountPV = totalMouthPV.subtract(bigMouthPV);
return CurrentMonthVO.builder().smallCurrentMonthPV(smallMountPV).totalCurrentMonthPV(totalMouthPV).build();
}
@Override
public PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param) {

View File

@ -8,8 +8,6 @@ import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.retail.member.ext.CuMemberRetailRegionExt;
import com.hzs.common.domain.system.base.BdArea;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.retail.member.mapper.CuMemberRetailRegionMapper;
import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.service.ICuMemberRetailRegionService;
@ -79,11 +77,6 @@ public class CuMemberRetailRegionServiceImpl extends ServiceImpl<CuMemberRetailR
return null;
}
@Override
public List<BdArea> listChooseRegion(Integer systemType) {
return baseMapper.listChooseRegion(systemType, SecurityUtils.getUserId());
}
@Override
public List<UnboundAreaVO> unboundAreaList(Integer pkCountry, Integer systemType) {
return baseMapper.unboundAreaList(pkCountry, systemType);

View File

@ -3,7 +3,6 @@ package com.hzs.retail.member.service.impl;
import cn.hutool.core.util.DesensitizedUtil;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.member.base.service.ICuMemberService;
@ -41,17 +40,8 @@ public class MemberRetailServiceImpl implements IMemberRetailService {
.pkMaxAwards(cuMember.getPkMaxAwards())
.build()).getData();
// 会员标记0=正常会员1=V0会员2=V5会员
// 正常会员 指V1以上可以查看所有功能
// V0会员 指V0级别只有会员专区
// V5会员 指V5级别只有V5显示市场动态等
// 会员标记0=正常会员
int memberSign = 0;
if (EGrade.START_UP.getValue() == memberDataDTO.getGradeValue()) {
memberSign = 1;
}
if (EGrade.S_VIP.getValue() == memberDataDTO.getGradeValue()) {
memberSign = 2;
}
// 账号控制
Integer control = null;

View File

@ -101,36 +101,4 @@
)
</update>
<!-- 查询会员升级记录 -->
<select id="getLevelByGradeValue" resultType="com.hzs.common.domain.member.detail.CuMemberLevel">
select *
from (select cml.pk_member, cml.old_level, cml.new_level, cml.upgrade_time
from cu_member_level cml
where cml.del_flag = 0
and cml.pk_member = #{pkMember}
<if test="null != queryTime">
and cml.upgrade_time > #{queryTime}
</if>
and cml.new_level in (select bg.pk_id
from bd_grade bg
where bg.del_flag = 0
and bg.pk_country = #{pkCountry}
and bg.grade_value >= #{gradeValue})
union
select cmg.pk_member, cmg.old_level, cmg.new_level, cmg.creation_time
from cu_member_grade cmg
where cmg.del_flag = 0
and cmg.pk_member = #{pkMember}
<if test="null != queryTime">
and cmg.creation_time > #{queryTime}
</if>
and cmg.new_level in (select bg.pk_id
from bd_grade bg
where bg.del_flag = 0
and bg.pk_country = #{pkCountry}
and bg.grade_value >= #{gradeValue})
order by upgrade_time) t
where rownum = 1
</select>
</mapper>

View File

@ -35,31 +35,6 @@
and bg.grade_value >= #{gradeValue}
</select>
<!-- 可选择的收益区域 -->
<select id="listChooseRegion" resultType="com.hzs.common.domain.system.base.BdArea">
select ba.PK_ID, ba.PARENT, ba.NAME
from bd_area ba
where ba.del_flag = 0
and ba.pk_country = 1
and ba.ENABLE_STATE = 0
and ba.pk_id not in (
SELECT COUNTY
FROM CU_MEMBER_RETAIL_REGION cmrr
INNER JOIN cu_member cm ON cmrr.pk_member = cm.pk_id
LEFT JOIN BD_VERTEX bv ON cm.PK_VERTEX = bv.PK_ID
LEFT JOIN BD_REGION_VERTEX brv ON bv.REGION_VERTEX_PK_ID = brv.PK_ID
where 1 = 1
AND cmrr.PK_MEMBER IN (select pk_id
from CU_MEMBER
where PK_VERTEX in (select pk_id
from BD_VERTEX
where REGION_VERTEX_PK_ID in (select REGION_VERTEX_PK_ID
from BD_VERTEX
where pk_id in (select PK_VERTEX FROM cu_member WHERE PK_ID = #{userId}))
and DEL_FLAG = 0))
)
</select>
<!-- 插入收益区域 -->
<insert id="insertData">
insert into cu_member_retail_region cmrr (

View File

@ -6,7 +6,6 @@ import com.hzs.common.core.annotation.RepeatSubmit;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EGrade;
import com.hzs.common.core.enums.ESpecialArea;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.exception.ServiceException;
@ -86,8 +85,7 @@ public class ApiRetailOrderController {
try {
// 购物车中获取商品信息获取等级
BdGrade bdGrade = iSaOrderService.calculateGrade(levelParam.getSpecialArea(), convertShoppingCarToSku(SecurityUtils.getUserId(), levelParam.getShopList()),
null, levelParam.getUpgradeMember(), SecurityUtils.getSystemType(), EYesNo.NO.getIntValue());
BdGrade bdGrade = iSaOrderService.calculateGrade();
if (null != bdGrade) {
orderLevelVO.setIsEnough(true);
orderLevelVO.setPkGradeVal(bdGrade.getGradeName());
@ -153,7 +151,7 @@ public class ApiRetailOrderController {
postageParam.setPkCreator(SecurityUtils.getUserId());
if (ESpecialArea.RETAIL_REGISTER.getValue() == postageParam.getSpecialArea()) {
// 注册升级包邮
// 注册包邮
return AjaxResult.success(RetailOrderPostageVO.builder()
.postage(BigDecimal.ZERO)
.build());
@ -205,7 +203,7 @@ public class ApiRetailOrderController {
// 获取等级列表
List<BdGrade> gradeList = iGradeServiceApi.getRetailGradeList().getData();
// 校验注册权限等
String checkStr = this.checkRegistrationPermission(registerParam, gradeList);
String checkStr = this.checkRegistrationPermission(registerParam);
if (null != checkStr) {
return AjaxResult.error(checkStr);
}
@ -249,7 +247,7 @@ public class ApiRetailOrderController {
// 等级列表
List<BdGrade> gradeList = iGradeServiceApi.getRetailGradeList().getData();
// 校验注册权限等
String checkStr = this.checkRegistrationPermission(registerParam, gradeList);
String checkStr = this.checkRegistrationPermission(registerParam);
if (null != checkStr) {
return AjaxResult.error(checkStr);
}
@ -305,7 +303,7 @@ public class ApiRetailOrderController {
}
/**
* 确认订单注册升级之外的订单
* 确认订单注册之外的订单
*
* @param orderParam 订单入参
* @param source 数据来源
@ -339,7 +337,7 @@ public class ApiRetailOrderController {
}
/**
* 支付订单注册升级之外的订单
* 支付订单注册之外的订单
*
* @param payParam 支付订单入参
* @return
@ -527,38 +525,21 @@ public class ApiRetailOrderController {
* 校验注册权限
*
* @param orderParam 订单入参
* @param gradeList 等级列表
* @return
*/
private String checkRegistrationPermission(RetailOrderRegisterParam orderParam, List<BdGrade> gradeList) {
if (CollectionUtil.isEmpty(gradeList)) {
gradeList = iGradeServiceApi.getRetailGradeList().getData();
}
// 校验会员等级是否大于V0不然不能进行注册会员
private String checkRegistrationPermission(RetailOrderRegisterParam orderParam) {
CuMember creatorMember = iMemberServiceApi.getRetailMember(orderParam.getPkCreator(), null).getData();
if (null == creatorMember) {
return "当前会员不存在";
}
// 校验推荐人等级是否为V0如果是V0不能进行注册
BdGrade memberGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(creatorMember.getPkSettleGrade())).findFirst().get();
if (EGrade.START_UP.getValue() == memberGrade.getGradeValue()) {
return "当前会员不能注册新会员";
}
orderParam.setCreatorMember(creatorMember);
orderParam.setPkParent(orderParam.getPkCreator());
if (!creatorMember.getMemberCode().equals(orderParam.getParentCode())) {
CuMember parentMember = iMemberServiceApi.getRetailMember(null, orderParam.getParentCode()).getData();
if (null == parentMember) {
return "推荐编号不存在";
}
// // 校验推荐人是否大于V0不然不能当推荐人
// BdGrade parentGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(parentMember.getPkSettleGrade())).findFirst().get();
// if (EGrade.START_UP.getValue() == parentGrade.getGradeValue()) {
// return orderParam.getParentCode() + " 不能做为推荐人";
// }
// 校验推荐人是否在当前会员伞下
CuMember topMember = iMemberServiceApi.getRetailTopMember(parentMember.getPkId(), null, orderParam.getPkCreator(), null).getData();
@ -567,7 +548,6 @@ public class ApiRetailOrderController {
}
orderParam.setPkParent(parentMember.getPkId());
}
return null;
}
@ -606,13 +586,7 @@ public class ApiRetailOrderController {
if (null == buyMember) {
return "购买会员编号不存在,请重试";
}
if (ESpecialArea.RETAIL_REPURCHASE.getValue() != specialArea) {
// 判断购买会员是否是V0V0不允许下升级复购以外订单
GradeDTO gradeDTO = iGradeServiceApi.getGrade(buyMember.getPkSettleGrade()).getData();
if (gradeDTO.getGradeValue() == EGrade.START_UP.getValue()) {
return "当前购买会员编号不允许下单";
}
}
// TODO 必须在精品专区购买过商品才能在五折专区处理
return null;
}

View File

@ -192,8 +192,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
if (ESpecialArea.RETAIL_REGISTER.getValue() == orderParam.getSpecialArea()) {
// 注册升级订单计算会员等级
BdGrade newGrade = iSaOrderService.calculateGrade(orderParam.getSpecialArea(), orderParam.getOrderItemsParams(), gradeList,
cuMember, orderParam.getSystemType(), orderParam.getIsPay());
BdGrade newGrade = iSaOrderService.calculateGrade();
if (null == newGrade) {
throw new ServiceException("会员不满足升级条件");
}

View File

@ -414,17 +414,10 @@ public interface ISaOrderService extends IService<SaOrder> {
CuMemberAccountExt queryRetailOrderSpendDetails(CuMemberAccountExt cuMemberAccount, SaOrder saOrder, List<SaOrderItems> orderItemList);
/**
* 计算等级根据盒数
* 计算等级
*
* @param specialArea 商品专区
* @param orderItemsParams 商品明细
* @param gradeList 等级列表可为空
* @param updateGradeMember 升级会员信息升级使用
* @param systemType 系统类型
* @return 返回 null 则为不满足升级条件
*/
BdGrade calculateGrade(Integer specialArea, List<OrderItemsParam> orderItemsParams,
List<BdGrade> gradeList, CuMember updateGradeMember,
Integer systemType, Integer isPay);
BdGrade calculateGrade();
}

View File

@ -58,6 +58,7 @@ import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO;
import com.hzs.system.sys.IApprovalServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.ApprovalSubmitDTO;
@ -1416,55 +1417,11 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public BdGrade calculateGrade(Integer specialArea, List<OrderItemsParam> orderItemsParams,
List<BdGrade> gradeList, CuMember updateGradeMember,
Integer systemType, Integer isPay) {
if (CollectionUtil.isEmpty(gradeList)) {
gradeList = iGradeServiceApi.getRetailGradeList().getData();
}
// 当前产品盒数
BigDecimal boxNum = BigDecimal.ZERO;
public BdGrade calculateGrade() {
GradeDTO gradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.MEMBER.getValue(), CountryConstants.CHINA_COUNTRY).getData();
// 返回等级
BdGrade bdGrade = null;
if (ESpecialArea.RETAIL_REGISTER.getValue() == specialArea) {
// 注册专区直接算等级
bdGrade = this.getGradeByBox(boxNum, gradeList, null);
}
return bdGrade;
return BeanUtil.copyProperties(gradeDTO, BdGrade.class);
}
/**
* 根据盒数计算等级
*
* @param boxTotal 总盒数
* @param gradeList 等级列表可为空
* @param memberGrade 当前等级 -- 为空则为注册不为空则为升级
* @return
*/
private BdGrade getGradeByBox(final BigDecimal boxTotal, List<BdGrade> gradeList, BdGrade memberGrade) {
if (CollectionUtil.isEmpty(gradeList)) {
gradeList = iGradeServiceApi.getRetailGradeList().getData();
}
if (null == memberGrade) {
// 注册处理
// 去掉 V4,V5 升级盒数小于购买盒数的最大一个等级为注册等级
return gradeList.stream()
.filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.VIP.getValue() && tmpGrade.getGradeValue() != EGrade.S_VIP.getValue() && tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0)
.max(Comparator.comparingInt(BdGrade::getGradeValue)).get();
} else {
// 非注册处理
// 查询等级比现在当前等级大的然后倒序排序再查询 购买盒数 <= 等级盒数 的第一个等级就是当前升级的等级
Optional<BdGrade> gradeOptional = gradeList.stream()
// new 2025.06.25 V1-V3升级多送两级需要支持送完还能买此处暂时注释掉
// .filter(tmpGrade -> tmpGrade.getGradeValue() > memberGrade.getGradeValue())
.sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed())
.filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(BigDecimal.ZERO) > 0)
.filter(tmpGrade -> tmpGrade.getBoxNumber().compareTo(boxTotal) <= 0).findFirst();
return gradeOptional.orElse(memberGrade);
}
}
}

View File

@ -40,8 +40,4 @@ public class AwardsServiceProvider implements IAwardsServiceApi {
return R.ok(countryAwardsMap);
}
@Override
public R<List<BdAwards>> queryByPkCountryAwards(Integer pkCountry) {
return R.ok(iBdAwardsService.queryByPkCountryAwards(pkCountry));
}
}

View File

@ -109,11 +109,6 @@ public class GradeServiceProvider implements IGradeServiceApi {
return R.ok(gradeDTOList);
}
@Override
public R<List<BdGrade>> queryGrowUpFootmarkGrade(Integer pkCountry) {
return R.ok(iBdGradeService.queryGrowUpFootmarkGrade(pkCountry));
}
@Override
public R<List<GradeDTO>> findAll() {
List<BdGrade> gradeList = iBdGradeService.list();

View File

@ -65,11 +65,4 @@ public interface IBdAwardsService extends IService<BdAwards> {
**/
Integer checkGradeAwards(Long pkRegisterGrade, Long pkSettleGrade, Long pkAwards);
/**
* 根据所属国家查询奖衔
*
* @param pkCountry
* @return
*/
List<BdAwards> queryByPkCountryAwards(Integer pkCountry);
}

View File

@ -73,13 +73,6 @@ public interface IBdGradeService extends IService<BdGrade> {
*/
List<BdGrade> selectGradeAll(Integer pkCountry);
/**
* 根据国家查询等级配置列表
*
* @param pkCountry 国家
*/
List<BdGrade> queryGrowUpFootmarkGrade(Integer pkCountry);
/**
* 获取小于等于业绩最合适的等级
*

View File

@ -126,12 +126,4 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
return baseMapper.checkGradeAwards(pkRegisterGrade, pkSettleGrade, pkAwards);
}
@Override
public List<BdAwards> queryByPkCountryAwards(Integer pkCountry) {
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdAwards::getPkCountry, pkCountry);
queryWrapper.eq(BdAwards::getEnableState, EnableStatus.ENABLE.getValue());
queryWrapper.orderByAsc(BdAwards::getAwardsValue);
return baseMapper.selectList(queryWrapper);
}
}

View File

@ -66,7 +66,6 @@ public class BdGradeServiceImpl extends ServiceImpl<BdGradeMapper, BdGrade> impl
LambdaQueryWrapper<BdGrade> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdGrade::getPkCountry, pkCountry);
queryWrapper.eq(BdGrade::getEnableState, EnableStatus.ENABLE.getValue());
queryWrapper.le(BdGrade::getGradeValue, EGrade.S_VIP.getValue());
queryWrapper.orderByDesc(BdGrade::getGradeValue);
return baseMapper.selectList(queryWrapper);
}
@ -208,16 +207,6 @@ public class BdGradeServiceImpl extends ServiceImpl<BdGradeMapper, BdGrade> impl
return baseMapper.selectList(queryWrapper);
}
@Override
public List<BdGrade> queryGrowUpFootmarkGrade(Integer pkCountry) {
LambdaQueryWrapper<BdGrade> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdGrade::getPkCountry, pkCountry);
queryWrapper.eq(BdGrade::getEnableState, EnableStatus.ENABLE.getValue());
queryWrapper.le(BdGrade::getGradeValue, EGrade.S_VIP.getValue());
queryWrapper.orderByAsc(BdGrade::getGradeValue);
return baseMapper.selectList(queryWrapper);
}
@Override
public BdGrade getLastGrade(BigDecimal achieve, Integer pkCountry) {
return baseMapper.getLastGrade(achieve, pkCountry);

View File

@ -90,11 +90,6 @@ public class EnumsInitController {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
// 等级枚举枚举
for (EGrade value : EGrade.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
// 直推配置取值枚举
for (ETakeValueType value : ETakeValueType.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));

View File

@ -10,76 +10,71 @@ import lombok.Getter;
@Getter
public enum EAwards {
/**
* -1=海粉
*/
SEA_FLOUR(0, -1, "海粉", 1),
/**
* 0=
*/
MEMBER(1, 0, "", 0),
/**
* 黄宝
* V1
*/
HEADER(2, 5, "一级", 0),
/**
* 绿宝
* V2
*/
MANAGER(3, 10, "二级", 0),
/**
* 蓝宝
* V3
*/
HIGH_MANAGER(4, 15, "三级", 0),
/**
* 钻石
* V4
*/
SENIOR_MANAGER(5, 20, "四级", 0),
/**
* 黄钻
* V5
*/
CHIEF(6, 25, "五级", 0),
/**
* 绿钻
* V6
*/
HIGH_CHIEF(7, 30, "六级", 0),
/**
* 星耀蓝钻
* V7
*/
SENIOR_CHIEF(8, 35, "七级", 0),
/**
* 王者红钻
* 董事
*/
CHAIRMAN(9, 40, "八级", 0),
/**
* 传奇紫钻
* 大使
*/
HONOR_CHAIRMAN(10, 45, "九级", 0),
/**
* 10
* 皇冠大使
*/
GLOBAL_CHAIRMAN(11, 50, "十级", 0),
/**
* 11
*/
LEVEL_ELEVEN(12, 55, "十一级", 0),
LEVEL_ELEVEN(12, 55, "十一级", 1),
/**
* 12
*/
LEVEL_TWELVE(13, 60, "十二级", 0),
LEVEL_TWELVE(13, 60, "十二级", 1),
/**
* 13
*/
LEVEL_THIRTEEN(14, 65, "十三级", 0),
LEVEL_THIRTEEN(14, 65, "十三级", 1),
/**
* 14
*/
LEVEL_FOURTEEN(15, 70, "十四级", 0),
LEVEL_FOURTEEN(15, 70, "十四级", 1),
/**
* 15
*/
LEVEL_FIFTEEN(16, 75, "十五级", 0),
LEVEL_FIFTEEN(16, 75, "十五级", 1),
;
@ -101,28 +96,4 @@ public enum EAwards {
*/
private final int enable;
/**
* 根据枚举值获取等级枚举值用于级差枚举值转换
*
* @param value
* @return
*/
public static Integer getGradeValueByValue(int value) {
if (EGrade.START_UP.getValue() == value) {
return EAwards.MEMBER.getValue();
} else if (EGrade.HAI_FAN.getValue() == value) {
return EAwards.HEADER.getValue();
} else if (EGrade.YOU_KE.getValue() == value) {
return EAwards.MANAGER.getValue();
} else if (EGrade.MAKER.getValue() == value) {
return EAwards.HIGH_MANAGER.getValue();
} else if (EGrade.VIP.getValue() == value) {
return EAwards.SENIOR_MANAGER.getValue();
} else if (EGrade.S_VIP.getValue() == value) {
return EAwards.CHIEF.getValue();
}
return 0;
}
}

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.constant.MemberFrameworkConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
@ -15,45 +14,20 @@ public enum EGrade {
/**
* -3=虚拟
*/
VIRTUALLY(-3, 0, "虚拟", 1, EnumsPrefixConstants.ENU_CAT + 3, MemberFrameworkConstants.xuni),
VIRTUALLY(-3, 0, "虚拟", 1, MemberFrameworkConstants.xuni),
/**
* 1=待激活 死点 撤单
*/
DEAD_POINT(-1, 0, "待激活", 1, EnumsPrefixConstants.ENU_CAT + 1, MemberFrameworkConstants.toBeActivated),
DEAD_POINT(-1, 0, "待激活", 1, MemberFrameworkConstants.toBeActivated),
/**
* 2=已注销 退单
*/
LOGGED_OUT(-2, 0, "已注销", 1, EnumsPrefixConstants.ENU_CAT + 2, MemberFrameworkConstants.LOG_OFF),
LOGGED_OUT(-2, 0, "已注销", 1, MemberFrameworkConstants.LOG_OFF),
/**
* 顾客
* 会员
*/
START_UP(1, 20, "V0", 0, EnumsPrefixConstants.GRADE + "20", MemberFrameworkConstants.START_UP),
/**
* VIP
*/
HAI_FAN(2, 30, "V1", 0, EnumsPrefixConstants.GRADE + "30", MemberFrameworkConstants.Hi_Pink),
/**
* SVIP
*/
YOU_KE(3, 40, "V2", 0, EnumsPrefixConstants.GRADE + "40", MemberFrameworkConstants.YOU_KE),
/**
* 卓越
*/
MAKER(4, 50, "V3", 0, EnumsPrefixConstants.GRADE + "50", MemberFrameworkConstants.MAKER),
/**
* 首席
*/
VIP(5, 60, "V4", 0, EnumsPrefixConstants.GRADE + "60", MemberFrameworkConstants.VIP),
/**
* 合伙人
*/
S_VIP(6, 70, "V5", 0, EnumsPrefixConstants.GRADE + "70", MemberFrameworkConstants.S_VIP),
MEMBER(2, 30, "V1", 0, MemberFrameworkConstants.Hi_Pink),
;
@ -65,7 +39,6 @@ public enum EGrade {
* 实际值
*/
private final int value;
/**
* 显示标签
*/
@ -74,11 +47,6 @@ public enum EGrade {
* 是否启用0=,1= -- 来源EYesNo
*/
private final int enable;
/**
* 国际化翻译key值
*/
private final String key;
/**
* 头像地址
*/
@ -93,14 +61,4 @@ public enum EGrade {
return null;
}
public static String getGradeLabel(int value) {
for (EGrade eGrade : EGrade.values()) {
if (value == eGrade.value) {
return eGrade.getLabel();
}
}
return "";
}
}

View File

@ -36,13 +36,13 @@ public enum EOrderType {
FICTITIOUS_ORDER(20, "虚拟订单", 1),
/**
* 注册订单
* 精品专区
*/
RETAIL_REGISTER(41, "注册订单", 0),
RETAIL_REGISTER(41, "精品专区", 0),
/**
* 复购订单
* 商城专区
*/
RETAIL_REPURCHASE(43, "复购订单", 0),
RETAIL_REPURCHASE(43, "商城专区", 0),
/**
* 重消订单
*/

View File

@ -31,13 +31,13 @@ public enum ESpecialArea {
LIVE_BROADCAST(14, "直播专区", 1, 14, EMenuDetail.LIVE.getValue()),
/**
* 会员专区注册
* 精品专区
*/
RETAIL_REGISTER(41, "注册专区", 0, 41, -1),
RETAIL_REGISTER(41, "精品专区", 0, 41, -1),
/**
* 复购专区
* 商城专区
*/
RETAIL_REPURCHASE(43, "复购专区", 0, 43, -1),
RETAIL_REPURCHASE(43, "商城专区", 0, 43, -1),
/**
* 重消专区
*/

View File

@ -1,68 +0,0 @@
package com.hzs.common.core.enums.retail;
import com.hzs.common.core.enums.EGrade;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.math.BigDecimal;
/**
* 新零售商品等级价格枚举
*/
@AllArgsConstructor
@Getter
public enum ERetailWaresPrice {
/**
* V020
*/
V0(EGrade.START_UP.getValue(), new BigDecimal("399")),
/**
* V130
*/
V1(EGrade.HAI_FAN.getValue(), new BigDecimal("399")),
/**
* V240
*/
V2(EGrade.YOU_KE.getValue(), new BigDecimal("399")),
/**
* V350
*/
V3(EGrade.MAKER.getValue(), new BigDecimal("399")),
/**
* V460
*/
V4(EGrade.VIP.getValue(), new BigDecimal("399")),
/**
* V570
*/
V5(EGrade.S_VIP.getValue(), new BigDecimal("399")),
;
/**
* 等级值EGrade中的value)
*/
private final int value;
/**
* 价格
*/
private final BigDecimal price;
/**
* 根据枚举值获取枚举
*
* @param value 枚举值
* @return
*/
public static ERetailWaresPrice getEnumByValue(int value) {
for (ERetailWaresPrice eRetailWaresPrice : ERetailWaresPrice.values()) {
if (eRetailWaresPrice.value == value) {
return eRetailWaresPrice;
}
}
return V0;
}
}

View File

@ -192,19 +192,5 @@ public class SaOrderExt extends SaOrder {
*/
private Integer updateFlag;
/**
* 最新等级
*/
private BdGrade newGrade;
/**
* 需要添加的升级记录列表
*/
private List<CuMemberLevel> createLevelList;
/**
* 需要删除的升级记录列表
*/
private List<CuMemberLevel> deleteLevelList;
}