3
0
Fork 0

## 购买博羚店主,添加推荐人升级高级店主处理;

This commit is contained in:
cabbage 2025-07-09 16:32:27 +08:00
parent d4ce7fb9c2
commit e3dc6b251f
25 changed files with 202 additions and 517 deletions

View File

@ -5,11 +5,7 @@ import lombok.Data;
import java.io.Serializable;
/**
* Description: 国家数据传输DTO
* Author: jiang chao
* Time: 2022/8/31 16:56
* Classname: CountryDTO
* PackageName: com.hzs.system.base.dto
* 国家数据传输DTO
*/
@Data
public class CountryDTO implements Serializable {

View File

@ -21,7 +21,6 @@ import com.hzs.common.domain.member.detail.CuMemberServiceLogExt;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.system.config.BdAccount;
import com.hzs.common.domain.system.config.BdTransfer;
import com.hzs.common.domain.system.config.BdTransferSpecial;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.member.account.dto.CuMemberRechargeAccountParam;
@ -338,51 +337,6 @@ public class ApiCuMemberTransferController extends BaseController {
return (reference.equals(EYesNo.YES.getIntValue()) || transferStatus.equals(EYesNo.YES.getIntValue())) && !cuMemberTransferService.isBloodLine(pkMember, toPkMember);
}
/**
* 转账的特殊配置
*
* @param pkMember 转出方ID
* @param transferMoney 转账金额
* @param toPkMember 转入方ID
* @return AjaxResult
*/
private AjaxResult transferSpecial(BdTransferSpecial transferSpecial, Long pkMember, BigDecimal transferMoney, Long toPkMember) {
//特殊配置
if (null != transferSpecial) {
//某个人的最低提现金额
BigDecimal minAmountMoney = transferSpecial.getMinAmountMoney();
if (transferMoney.compareTo(minAmountMoney) < 0) {
return AjaxResult.error("转账金额不能低于最低转账金额");
}
Integer specialConfig = transferSpecial.getSpecialConfig();
//不校验
if (specialConfig.equals(ETransferSpecial.NO_CONTROL.getValue())) {
return AjaxResult.success();
}
//推荐
if (specialConfig.equals(ETransferSpecial.BLOOD_ALL.getValue()) && !cuMemberTransferService.isBloodLine(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在血缘线中");
}
if (specialConfig.equals(ETransferSpecial.BLOOD_ON_UMBRELLA.getValue()) && !cuMemberTransferService.isBloodKinshipOnUmbrella(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在血缘伞上");
}
if (specialConfig.equals(ETransferSpecial.BLOOD_UNDER_UMBRELLA.getValue()) && !cuMemberTransferService.isBloodKinshipUnderUmbrella(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在血缘伞下");
}
//安置
if (specialConfig.equals(ETransferSpecial.PLACE_ALL.getValue()) && !cuMemberTransferService.isPlaceSponsorOnline(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在安置线中");
}
if (specialConfig.equals(ETransferSpecial.PLACE_ON_UMBRELLA.getValue()) && !cuMemberTransferService.isPlaceSponsorOnUmbrella(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在安置伞上");
}
if (specialConfig.equals(ETransferSpecial.PLACE_UNDER_UMBRELLA.getValue()) && !cuMemberTransferService.isPlaceSponsorUnderUmbrella(pkMember, toPkMember)) {
return AjaxResult.error("接收方编号不在安置伞下");
}
}
return AjaxResult.success();
}
/**
* 计算手续费金额
*

View File

@ -1,6 +1,5 @@
package com.hzs.member.account.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.account.CuMemberTransfer;
import com.hzs.common.domain.member.account.CuMemberTransferExt;
@ -9,12 +8,7 @@ import com.hzs.member.account.vo.CuMemberTransferVO;
import java.util.List;
/**
* <p>
* 会员转账表 Mapper 接口
* </p>
*
* @author hzs
* @since 2022-09-06
*/
public interface CuMemberTransferMapper extends BaseMapper<CuMemberTransfer> {
@ -26,12 +20,4 @@ public interface CuMemberTransferMapper extends BaseMapper<CuMemberTransfer> {
*/
List<CuMemberTransferExt> selectMemberTransferList(CuMemberTransferVO cuMemberTransferVO);
/**
* 查询统计总充值金额
*
* @param cuMemberTransferVO 转账参数
* @return CuMemberTransferExt
*/
CuMemberTransferExt selectMemberTransferCount(CuMemberTransferVO cuMemberTransferVO);
}

View File

@ -1,22 +1,13 @@
package com.hzs.member.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.account.CuMemberAccount;
import com.hzs.common.domain.member.account.CuMemberTransfer;
import com.hzs.common.domain.member.account.CuMemberTransferExt;
import com.hzs.common.domain.system.config.BdTransfer;
import com.hzs.member.account.vo.CuMemberTransferVO;
/**
* <p>
* 会员转账表 服务类
* </p>
*
* @author hzs
* @since 2022-09-06
*/
public interface ICuMemberTransferService extends IService<CuMemberTransfer> {
/**
@ -46,33 +37,6 @@ public interface ICuMemberTransferService extends IService<CuMemberTransfer> {
*/
Boolean isBloodKinshipUnderUmbrella(Long pkMember, Long toPkMember);
/**
* 查找安置人线上
*
* @param pkMember 转出方ID
* @param toPkMember 转入方ID
* @return Boolean
*/
Boolean isPlaceSponsorOnline(Long pkMember, Long toPkMember);
/**
* 查找安置人伞上
*
* @param pkMember 转出方ID
* @param toPkMember 转入方ID
* @return Boolean
*/
Boolean isPlaceSponsorOnUmbrella(Long pkMember, Long toPkMember);
/**
* 查找安置人伞下
*
* @param pkMember 转出方ID
* @param toPkMember 转入方ID
* @return Boolean
*/
Boolean isPlaceSponsorUnderUmbrella(Long pkMember, Long toPkMember);
/**
* 获取转账配置
*
@ -86,11 +50,11 @@ public interface ICuMemberTransferService extends IService<CuMemberTransfer> {
* 保存转账
*
* @param cuMemberTransfer 转账信息
* @param cuMemberAccount 转出的账户信息
* @param toMemberAccount 转入的账户信息
* @param cuMemberAccount 转出的账户信息
* @param toMemberAccount 转入的账户信息
* @return Integer
*/
Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount,CuMemberAccount toMemberAccount);
Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount, CuMemberAccount toMemberAccount);
/**
* 根据条件查询转账列表

View File

@ -34,32 +34,22 @@ import java.math.RoundingMode;
import java.util.*;
/**
* <p>
* 会员转账表 服务实现类
* </p>
*
* @author hzs
* @since 2022-09-06
*/
@Service
public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMapper, CuMemberTransfer> implements ICuMemberTransferService {
@Autowired
private ICuMemberService cuMemberService;
@Autowired
private ICuMemberAccountService cuMemberAccountService;
@Autowired
private ICuMemberTradeService cuMemberTradeService;
@DubboReference
private ITransferServiceApi transferServiceApi;
@Autowired
private ICuMemberBaseService cuMemberBaseService;
@DubboReference
ITransferServiceApi transferServiceApi;
@Override
public Boolean isBloodLine(Long pkMember, Long toPkMember) {
@ -91,29 +81,6 @@ public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMap
return downOptional.isPresent();
}
@Override
public Boolean isPlaceSponsorOnline(Long pkMember, Long toPkMember) {
if (Boolean.TRUE.equals(isPlaceSponsorOnUmbrella(pkMember, toPkMember))) {
return true;
}
return isPlaceSponsorUnderUmbrella(pkMember, toPkMember);
}
@Override
public Boolean isPlaceSponsorOnUmbrella(Long pkMember, Long toPkMember) {
// TODO 此处会查询整颗树会出现问题
List<CuMemberExt> memberPlaceOn = cuMemberService.queryPlaceSponsorOnUmbrella(pkMember);
Optional<CuMemberExt> onPlaceOptional = memberPlaceOn.stream().filter(placeOn -> toPkMember.equals(placeOn.getPkId())).findFirst();
return onPlaceOptional.isPresent();
}
@Override
public Boolean isPlaceSponsorUnderUmbrella(Long pkMember, Long toPkMember) {
List<CuMemberExt> memberPlaceUnder = cuMemberService.queryPlaceSponsorUnderUmbrella(pkMember);
Optional<CuMemberExt> underPlaceOptional = memberPlaceUnder.stream().filter(placeUnder -> toPkMember.equals(placeUnder.getPkId())).findFirst();
return underPlaceOptional.isPresent();
}
@Transactional(rollbackFor = Exception.class)
@Override
public Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount, CuMemberAccount toMemberAccount) {
@ -231,7 +198,7 @@ public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMap
.tradeBalance(balance.add(amount))
.sourceCode(cuMemberTransfer.getTransferCode())
.tradeStatue(ETradeStatus.TAKE_EFFECT.getValue())
.remarks(getTransferRemarks(toMember, member, tradeAmount,ETransferType.TRANSFER_OUT))
.remarks(getTransferRemarks(toMember, member, tradeAmount, ETransferType.TRANSFER_OUT))
.build();
memberTrade.setPkCountry(cuMemberTransfer.getPkCountry());
memberTrade.setPkCreator(cuMemberTransfer.getPkCreator());
@ -267,7 +234,7 @@ public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMap
.tradeBalance(balance.add(tradeAmount))
.sourceCode(cuMemberTransfer.getTransferCode())
.tradeStatue(ETradeStatus.TAKE_EFFECT.getValue())
.remarks(getTransferRemarks(member, toMember, tradeAmount,ETransferType.TRANSFER_IN))
.remarks(getTransferRemarks(member, toMember, tradeAmount, ETransferType.TRANSFER_IN))
.build();
memberTrade.setPkCountry(cuMemberTransfer.getPkCountry());
memberTrade.setPkCreator(cuMemberTransfer.getPkCreator());
@ -304,8 +271,6 @@ public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMap
}
@Override
public Object[] selectMemberTransferList(CuMemberTransferVO cuMemberTransferVO) {
CuMemberTransferVO memberTransferVO;
@ -319,8 +284,7 @@ public class CuMemberTransferServiceImpl extends ServiceImpl<CuMemberTransferMap
cuMemberTransferVOS.add(memberTransferVO);
}
}
Object[] objects = new Object[]{cuMemberTransferExts, cuMemberTransferVOS};
return objects;
return new Object[]{cuMemberTransferExts, cuMemberTransferVOS};
}

View File

@ -605,7 +605,6 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
*/
List<Long> checkMemberOrder(@Param("pkMemberList") List<Long> pkMemberList);
/**
* 查询多会员是否在血缘伞下
*
@ -615,8 +614,15 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
*/
BdTradeWhiteConfig selectMemberByUnderBlood(@Param("pkMember") Long pkMember, @Param("memberType") Integer memberType);
int validateCompanyCount(@Param("gradeValue") Integer gradeValue);
int validateBranchOfficeCount(@Param("areaId") Integer areaId, @Param("userId") Long userId);
/**
* 查询博羚店主会员
*
* @return
*/
CuMember getShopkeeperMember(@Param("pkMember") Long pkMember);
}

View File

@ -100,13 +100,6 @@ public interface ICuMemberService extends IService<CuMember> {
*/
boolean checkLowerMember(Long pkMember);
/**
* 查找安置人伞上
*
* @param memberId 安置人编号
*/
List<CuMemberExt> queryPlaceSponsorOnUmbrella(Long memberId);
/**
* 查找安置人伞上
*
@ -893,4 +886,12 @@ public interface ICuMemberService extends IService<CuMember> {
int validateCompanyCount();
int validateBranchOfficeCount(Integer areaId, Long userId);
/**
* 查询博羚店主会员
*
* @return
*/
CuMember getShopkeeperMember(Long pkMember);
}

View File

@ -31,6 +31,7 @@ import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.system.config.BdAccount;
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.common.util.TransactionUtils;
import com.hzs.member.account.dto.BusinessCommissionDTO;
import com.hzs.member.account.service.ICuMemberAccountService;
@ -50,10 +51,11 @@ import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -76,6 +78,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@DubboReference
IAwardsServiceApi iAwardsServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@DubboReference
ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@ -83,13 +87,11 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Autowired
private MemberToolsHandler memberToolsHandler;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
private ICuMemberAchieveService iCuMemberAchieveService;
@Autowired
private RedisService redisService;
@Autowired
private RabbitTemplate rabbitTemplate;
private ICuMemberService cuMemberService;
private ICuMemberService iCuMemberService;
private ICuMemberRegisterService cuMemberRegisterService;
@ -144,11 +146,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
this.cuMemberAccountService = cuMemberAccountService;
}
@Autowired
public void setCuMemberService(ICuMemberService cuMemberService) {
this.cuMemberService = cuMemberService;
}
@Autowired
public void setCuMemberRegisterService(ICuMemberRegisterService cuMemberRegisterService) {
this.cuMemberRegisterService = cuMemberRegisterService;
@ -164,7 +161,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
public void updateCuMember(CuMember cuMember) {
redisService.lockKeyMany(CacheConstants.UPD_MEMBER + cuMember.getMemberCode());
try {
cuMemberService.updateById(cuMember);
iCuMemberService.updateById(cuMember);
} finally {
redisService.unlock(CacheConstants.UPD_MEMBER + cuMember.getMemberCode());
}
@ -177,7 +174,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 当cuMember为空时代表为复购订单不更新会员表
if (cuMember != null) {
// 验证等级是否发生了变化海外存在累计升级的国家
CuMember member = cuMemberService.getMember(cuMember.getPkId());
CuMember member = iCuMemberService.getMember(cuMember.getPkId());
if (!cuMember.getPkSettleGrade().equals(member.getPkSettleGrade())) {
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, member.getPkSettleGrade());
}
@ -260,10 +257,10 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
if (isPay) {
updateCuMember(cuMember);
} else {
if (cuMemberService.getMember(cuMember.getPkId()) != null) {
if (iCuMemberService.getMember(cuMember.getPkId()) != null) {
updateCuMember(cuMember);
} else {
cuMemberService.saveMember(cuMember);
iCuMemberService.saveMember(cuMember);
}
}
// 代表在线支付在线支付先插入一条充值信息
@ -287,7 +284,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Override
public void saveShareMember(CuMember cuMember) {
// 保存会员
cuMemberService.saveMember(cuMember);
iCuMemberService.saveMember(cuMember);
// 保存账户
saveMemberAccount(cuMember);
// 用户注册信息
@ -365,7 +362,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 扣款 扣款信息
Integer pkCountry = saOrder.getPkCountry();
Long pkMember = saOrder.getPkCreator();
CuMember cuMember = cuMemberService.getMember(saOrder.getPkCreator());
CuMember cuMember = iCuMemberService.getMember(saOrder.getPkCreator());
if (cuMember != null) {
pkCountry = cuMember.getPkSettleCountry();
pkMember = cuMember.getPkId();
@ -602,13 +599,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
// 会员账号 验证会员账户是否存在金额
CuMember member = cuMemberService.getMemberById(saOrder.getPkMember());
CuMember member = iCuMemberService.getMemberById(saOrder.getPkMember());
// 会员变为死点
member.setCategory(ECategory.LOGGED_OUT.getValue());
member.setCustomerType(ECustomerType.DEAD_POINT.getValue());
member.setPkModified(saOrder.getPkModified());
member.setModifiedTime(DateUtils.currentDateTime());
cuMemberService.updateById(member);
iCuMemberService.updateById(member);
// 撤销正常订单修改 cu_member_register 账户状态为死点
CuMemberRegister cuMemberRegister = new CuMemberRegister();
cuMemberRegister.setPkMember(member.getPkId());
@ -629,7 +626,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
CuMemberAccount payMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
// 会员账号 验证会员账户是否存在金额
CuMember member = cuMemberService.getMember(saOrder.getPkMember());
CuMember member = iCuMemberService.getMember(saOrder.getPkMember());
//删除会员
LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>();
@ -638,7 +635,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
updateWrapper.set(CuMember::getModifiedTime, DateUtils.currentDateTime());
updateWrapper.set(CuMember::getPkModified, saOrder.getPkModified());
updateWrapper.eq(CuMember::getPkId, member.getPkId());
cuMemberService.update(updateWrapper);
iCuMemberService.update(updateWrapper);
// 删除会员注册表
LambdaUpdateWrapper<CuMemberRegister> updateWrapperRegister = new LambdaUpdateWrapper<>();
@ -870,7 +867,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
cuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
// 回退奖衔,根据订单从 cu_member_awards查询
cuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime);
cuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime);
iCuMemberService.deleteCuMemberByPkMember(pkMember, pkApprove, currentDateTime);
cuMemberAccountService.deleteCuMemberAccountByPkMember(pkMember, pkApprove, currentDateTime);
// 撤销正常订单修改 cu_member_register 账户状态为死点
CuMemberRegister cuMemberRegister = new CuMemberRegister();
@ -936,7 +933,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
if (saOrder.getUpdateFlag() != null && EYesNo.YES.getIntValue() == saOrder.getUpdateFlag()) {
if (null != cuMember) {
// 更新会员信息
cuMemberService.updateById(cuMember);
iCuMemberService.updateById(cuMember);
}
}
@ -1241,7 +1238,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
memberUpdateWrapper.set(CuMember::getPkModified, userId);
memberUpdateWrapper.set(CuMember::getModifiedTime, nowDate);
memberUpdateWrapper.set(CuMember::getCategory, ECategory.LOGGED_OUT.getValue());
cuMemberService.update(memberUpdateWrapper);
iCuMemberService.update(memberUpdateWrapper);
// 添加会员信息修改记录
CuMemberChangeLog cuMemberChangeLog = new CuMemberChangeLog();
cuMemberChangeLog.setPkMember(saOrder.getPkMember());
@ -1260,7 +1257,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
memberUpdateWrapper.set(CuMember::getPkModified, userId);
memberUpdateWrapper.set(CuMember::getModifiedTime, new Date());
memberUpdateWrapper.set(CuMember::getCategory, ECategory.LOGGED_OUT.getValue());
cuMemberService.update(memberUpdateWrapper);
iCuMemberService.update(memberUpdateWrapper);
// 添加会员信息修改记录
List<CuMemberChangeLog> cuMemberChangeLogList = new ArrayList<>();
for (Long pkMember : pkMemberList) {
@ -1403,12 +1400,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
Long pkMember = cuMember.getPkParent();
Integer pkCountry = cuMember.getPkSettleCountry();
// 获取推荐人的左右区
CuMember parentMember = cuMemberService.queryMember(pkMember);
CuMember parentMember = iCuMemberService.queryMember(pkMember);
int placeDept;
// 查询当前的业绩
CuMemberAchieve cuMemberAchieve = cuMemberAchieveService.queryCuMemberAchieveByPkMember(pkMember, pkCountry);
CuMemberAchieve cuMemberAchieve = iCuMemberAchieveService.queryCuMemberAchieveByPkMember(pkMember, pkCountry);
placeDept = getPlaceDept(isFirst, isFirstAchieve, cuMemberAchieve, parentMember.getPkId());
CuMemberExt cuMemberExt = cuMemberService.queryPlaceSponsorLastLeft(pkMember, placeDept);
CuMemberExt cuMemberExt = iCuMemberService.queryPlaceSponsorLastLeft(pkMember, placeDept);
CuMember placeCuMember = new CuMember();
if (cuMemberExt != null) {
placeCuMember.setPkPlaceParent(cuMemberExt.getPkId());
@ -1460,7 +1457,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
} else {
// 验证左右区人数放入人数少的
List<CuMember> personNumList = cuMemberService.queryMemberLeftRightCount(pkParent);
List<CuMember> personNumList = iCuMemberService.queryMemberLeftRightCount(pkParent);
if (personNumList != null && personNumList.size() > 1) {
long leftNum = 0;
long rigthNum = 0;
@ -1486,7 +1483,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Override
public void saveRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt) {
// 保存会员信息
cuMemberService.saveMember(cuMember);
iCuMemberService.saveMember(cuMember);
// 保存会员账户信息
CuMemberAccount cuMemberAccount = CuMemberAccount.builder()
@ -1503,6 +1500,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 保存会员等级变动
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0);
// 判断推送MQ处理推荐人等级
handleParentUpgrade(cuMember, saOrder);
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
}
@ -1517,6 +1516,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 保存会员等级变动如果旧等级和新等级相同则不记录
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld());
}
// 判断推送MQ处理推荐人等级
handleParentUpgrade(cuMember, saOrder);
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
}
@ -1543,7 +1544,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 更新会员信息
updateWrapper.eq(CuMember::getPkId, cuMember.getPkId());
updateWrapper.set(CuMember::getModifiedTime, new Date());
cuMemberService.update(updateWrapper);
iCuMemberService.update(updateWrapper);
}
// if (!cuMember.getPkSettleGrade().equals(saOrder.getPkGradeOld())) {
@ -1574,4 +1575,39 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
}
/**
* 判断推送MQ处理推荐人等级
*
* @param cuMember
*/
private void handleParentUpgrade(CuMember cuMember, SaOrderExt saOrder) {
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
if (EGrade.VIP.getValue() == gradeDTO.getGradeValue()) {
// 会员等级为 博羚店主推荐人如果也是博羚店主需要升级为高级店主
CuMember parentMember = iCuMemberService.getShopkeeperMember(cuMember.getPkParent());
if (null != parentMember) {
// 记录升级历史
GradeDTO upgradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData();
CuMemberLevel cuMemberLevel = CuMemberLevel.builder()
.pkMember(parentMember.getPkId())
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
.oldLevel(parentMember.getPkSettleGrade())
.newLevel(upgradeDTO.getPkId())
.upgradeTime(saOrder.getPayTime())
.pkOrder(saOrder.getPkId())
.build();
cuMemberLevel.setPkCountry(cuMember.getPkSettleCountry());
cuMemberLevel.setPkCreator(cuMember.getPkId());
cuMemberLevelService.save(cuMemberLevel);
LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(CuMember::getPkSettleGrade, upgradeDTO.getPkId());
updateWrapper.eq(CuMember::getPkId, parentMember.getPkId());
updateWrapper.set(CuMember::getPkModified, cuMember.getPkId());
updateWrapper.set(CuMember::getModifiedTime, new Date());
iCuMemberService.update(updateWrapper);
}
}
}
}

View File

@ -77,7 +77,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -197,11 +196,6 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
return this.count(queryWrapper) > 0;
}
@Override
public List<CuMemberExt> queryPlaceSponsorOnUmbrella(Long memberId) {
return baseMapper.selectPlaceSponsorOnUmbrella(memberId, null, null);
}
@Override
public List<CuMemberExt> queryPlaceSponsorOnUmbrella(Long memberId, String memberCode, String phone) {
return baseMapper.selectPlaceSponsorOnUmbrella(memberId, memberCode, phone);
@ -3159,4 +3153,9 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
return baseMapper.validateBranchOfficeCount(areaId, userId);
}
@Override
public CuMember getShopkeeperMember(Long pkMember) {
return baseMapper.getShopkeeperMember(pkMember);
}
}

View File

@ -26,31 +26,18 @@
<result column="ISSUED_AMOUNT" property="issuedAmount"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG,
PK_CREATOR,
CREATION_TIME,
PK_MODIFIED,
MODIFIED_TIME,
PK_COUNTRY,
PK_ID, PK_MEMBER, TRANSFER_CODE, PK_ACCOUNT, TO_PK_MEMBER,
PK_TO_ACCOUNT, PK_RATE, TRANSFER_MONEY, REMARKS, APPROVE_STATE, APPROVER, APPROVE_TIME,
SERVICE_CHARGE,ISSUED_AMOUNT
</sql>
<sql id="select_base">
select r.*,
m.member_code as memberCode,
m.member_name as memberName,
t.member_code toMemberCode,
t.member_name toMemberName
from cu_member_transfer r
left join cu_member m
on r.pk_member = m.pk_id
left join cu_member t
on r.to_pk_member = t.pk_id
t.member_code toMemberCode,
t.member_name toMemberName
from cu_member_transfer r
left join cu_member m
on r.pk_member = m.pk_id
left join cu_member t
on r.to_pk_member = t.pk_id
</sql>
<sql id="ids_where">
@ -116,12 +103,4 @@
order by r.creation_time Desc
</select>
<select id="selectMemberTransferCount" resultType="com.hzs.common.domain.member.account.CuMemberTransferExt">
select NVL(sum(r.transfer_money), 0) as transferMoney
from cu_member_transfer r
left join cu_member m on r.pk_member = m.pk_id
<include refid="list_where"></include>
</select>
</mapper>

View File

@ -207,13 +207,16 @@
,IS_ACTIVATE
</if>
)
VALUES (#{pkId,jdbcType=INTEGER}, #{memberCode}, #{memberName}, #{category}, #{customerType}, #{phone}, #{email, jdbcType=VARCHAR}, #{idCard, jdbcType=VARCHAR}, #{pkSettleCountry},
#{pkParent}, #{pkPlaceParent,jdbcType=NUMERIC}, #{placeDept,jdbcType=INTEGER}, #{pkTeamCode,jdbcType=INTEGER}, #{pkCenterCode,jdbcType=INTEGER}, #{source}, #{pkRegisterGrade},
VALUES (#{pkId,jdbcType=INTEGER}, #{memberCode}, #{memberName}, #{category}, #{customerType}, #{phone}, #{email, jdbcType=VARCHAR},
#{idCard, jdbcType=VARCHAR}, #{pkSettleCountry},
#{pkParent}, #{pkPlaceParent,jdbcType=NUMERIC}, #{placeDept,jdbcType=INTEGER}, #{pkTeamCode,jdbcType=INTEGER},
#{pkCenterCode,jdbcType=INTEGER}, #{source}, #{pkRegisterGrade},
#{pkSettleGrade}, #{pkAwards}, #{consumeMoney,jdbcType=NUMERIC}, #{consumeAchieve,jdbcType=NUMERIC}, #{payStatus}, #{loginPwd}, #{payPwd},
#{loginPassword}, #{payPassword}, #{pkVertex,jdbcType=INTEGER}, #{accountStatus}, #{orderSource},
#{pkCreator,jdbcType=INTEGER}, #{creationTime, jdbcType=TIMESTAMP}, #{pkCountry}, #{payTime, jdbcType=TIMESTAMP},
#{globalCode, jdbcType=VARCHAR}, #{countryCode, jdbcType=VARCHAR}, #{registerAuthority,jdbcType=INTEGER},
#{expireDate, jdbcType=DATE}, #{stopDate, jdbcType=DATE}, #{isMakerGift,jdbcType=INTEGER}, #{makerGiftTime,jdbcType=TIMESTAMP}, #{nickName, jdbcType=VARCHAR}
#{expireDate, jdbcType=DATE}, #{stopDate, jdbcType=DATE}, #{isMakerGift,jdbcType=INTEGER}, #{makerGiftTime,jdbcType=TIMESTAMP},
#{nickName, jdbcType=VARCHAR}
<if test="systemType != null">
,#{systemType}
</if>
@ -1459,7 +1462,8 @@
</select>
<select id="parentList" resultType="com.hzs.member.base.vo.ParentMemberVo">
select a.* from ( select cm.CONSUME_MONEY consumeMoney,cm.CONSUME_ACHIEVE consumeAchieve,cm.member_code memberCode,cm.member_name memberName,cm.PK_REGISTER_GRADE pkRegisterGrade,
select a.* from ( select cm.CONSUME_MONEY consumeMoney,cm.CONSUME_ACHIEVE consumeAchieve,cm.member_code memberCode,cm.member_name
memberName,cm.PK_REGISTER_GRADE pkRegisterGrade,
cm.PK_SETTLE_GRADE pkSettleGrade,
cm.CREATION_TIME creationTime,
cm.pk_vertex,
@ -1488,7 +1492,8 @@
union all
select cm.CONSUME_MONEY consumeMoney,cm.CONSUME_ACHIEVE consumeAchieve,cm.member_code memberCode,cm.member_name memberName,cm.PK_REGISTER_GRADE pkRegisterGrade,
select cm.CONSUME_MONEY consumeMoney,cm.CONSUME_ACHIEVE consumeAchieve,cm.member_code memberCode,cm.member_name
memberName,cm.PK_REGISTER_GRADE pkRegisterGrade,
cm.PK_SETTLE_GRADE pkSettleGrade,
cm.CREATION_TIME creationTime,
cm.pk_vertex,
@ -1895,25 +1900,25 @@
1
else
0
end experience_center_show,
end experience_center_show,
case
when tmp2.pk_member is null then
1
else
0
end special_registration,
end special_registration,
case
when tmp10.store_level = 2 then
0
else
1
end wholesale_show,
end wholesale_show,
case
when tmp10.store_level = 1 or tmp10.store_level = 0 then
0
else
1
end maker_space_show
end maker_space_show
from cu_member cm
left join BD_AREA area on cm.PK_AREA_ID = area.PK_ID
left join (select distinct cmsc.pk_member
@ -2422,10 +2427,26 @@
where rownum = 1
</select>
<select id="validateCompanyCount" resultType="java.lang.Integer">
select count(pk_id) from cu_member where PK_SETTLE_GRADE in (select pk_id from BD_GRADE where GRADE_VALUE = #{gradeValue})
select count(pk_id)
from cu_member
where PK_SETTLE_GRADE in (select pk_id from BD_GRADE where GRADE_VALUE = #{gradeValue})
</select>
<select id="validateBranchOfficeCount" resultType="java.lang.Integer">
select count(pk_id) from cu_member where PK_AREA_ID is not null and pk_area_id = #{areaId} and pk_id != #{userId}
select count(pk_id)
from cu_member
where PK_AREA_ID is not null
and pk_area_id = #{areaId}
and pk_id != #{userId}
</select>
<!-- 查询博羚店主会员 -->
<select id="getShopkeeperMember" resultType="com.hzs.common.domain.member.base.CuMember">
select cm.*
from cu_member cm
left join bd_grade bg
on bg.pk_id = cm.pk_settle_grade
where cm.pk_id = #{pkMember}
and bg.grade_value = 60
</select>
</mapper>

View File

@ -226,7 +226,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
public List<SaOrderItems> createSaOrderItems(RetailOrderParam orderParam, List<BdGrade> gradeList,
CuMember cuMember, SaOrderExt saOrderExt, CurrencyDTO currency) {
// 需要查询盒数商品
List<String> boxProductList = BoxProductUtil.getBoxProductListBySystemType(null);
List<String> boxWaresList = BoxProductUtil.getBoxProductListBySystemType(null);
// 订单明细信息
List<SaOrderItems> orderItemsList = new ArrayList<>();
@ -244,8 +244,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
// 当前盒数
int boxNum = 0;
// // 2025.03.11 添加需求复购专区重消专区指定盒数商品每用户每月限购50件
// this.checkWaresLimit(cuMember.getPkId(), orderParam.getSpecialArea(), waresDetailExtList, boxProductList);
// 2025.03.11 添加需求复购专区重消专区指定盒数商品每用户每月限购50件
this.checkWaresLimit(cuMember, orderParam.getSpecialArea(), waresDetailExtList, boxWaresList, gradeList);
// 遍历生成订单明细数据
for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
@ -261,7 +261,7 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
saOrderHandle.setPostageTmpMap(orderParam.getTranType(), postageMap, waresDetailExt, orderItems);
}
if (boxProductList.contains(waresDetailExt.getWaresCode())) {
if (boxWaresList.contains(waresDetailExt.getWaresCode())) {
// 商品是盒数商品需要累计数量
boxNum += orderItems.getWaresQuantity();
}
@ -782,22 +782,25 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
/**
* 2025.03.11 添加需求复购专区重消专区指定盒数商品每用户每月限购50件
*
* @param pkMember 会员ID
* @param cuMember 会员
* @param specialArea 所属专区
* @param waresDetailExtList 购买商品列表
* @param boxProductList 盒数商品列表
* @param boxWaresList 盒数商品列表
* @param gradeList 等级列表
* @return
*/
private void checkWaresLimit(Long pkMember, Integer specialArea, List<BdWaresDetailExt> waresDetailExtList, List<String> boxProductList) {
private void checkWaresLimit(CuMember cuMember, Integer specialArea, List<BdWaresDetailExt> waresDetailExtList, List<String> boxWaresList, List<BdGrade> gradeList) {
if (null == gradeList) {
return;
}
String limitDate = DateUtils.parseDateToFormat(DateUtils.YYYYMM, new Date());
// 商品数量mapkey: 商品编号value: 商品数量
Map<String, Integer> waresNumMap = new HashMap<>();
// 商品信息mapkey: 商品编号value: 商品名称
Map<String, String> waresNameMap = new HashMap<>();
for (BdWaresDetailExt waresDetailExt : waresDetailExtList) {
if ((ESpecialArea.RETAIL_REPURCHASE.getValue() == specialArea
|| ESpecialArea.RETAIL_RESCISSION.getValue() == specialArea)
&& boxProductList.contains(waresDetailExt.getWaresCode())
if ((ESpecialArea.RETAIL_REPURCHASE.getValue() == specialArea)
&& boxWaresList.contains(waresDetailExt.getWaresCode())
&& EYesNo.NO.getIntValue() == waresDetailExt.getIsGift()
) {
// 2025.03.11 添加需求复购专区重消专区指定盒数商品每月每人限购50件赠品排除
@ -807,19 +810,37 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
}
if (!waresNumMap.isEmpty()) {
// 根据会员等级进行限购处理
BdGrade bdGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(cuMember.getPkSettleGrade())).findFirst().get();
// 会员VIP合伙人每月限购1套
Integer limitNum = RetailConstants.V1_LIMIT;
if (EGrade.VIP.getValue() == bdGrade.getGradeValue()
|| EGrade.S_VIP.getValue() == bdGrade.getGradeValue()) {
// 会员VIP合伙人每月限购10套
limitNum = RetailConstants.V4_LIMIT;
} else if (EGrade.BRANCH_COMPANY.getValue() == bdGrade.getGradeValue()) {
// 分公司每月限购25套
limitNum = RetailConstants.V6_LIMIT;
} else if (EGrade.COMPANY.getValue() == bdGrade.getGradeValue()) {
// 总公司不限购给一个很大的值
limitNum = RetailConstants.V7_LIMIT;
}
for (String key : waresNumMap.keySet()) {
if (waresNumMap.get(key) > 50) {
throw new ServiceException("商品【" + waresNameMap.get(key) + "】每月限购50件");
if (waresNumMap.get(key) > limitNum) {
throw new ServiceException("商品【" + waresNameMap.get(key) + "】每月限购 " + limitNum + " ");
}
}
List<SaOrderWaresLimitExt> limitList = iSaOrderWaresLimitService.listWaresList(pkMember, specialArea, limitDate, new ArrayList<>(waresNumMap.keySet()));
List<SaOrderWaresLimitExt> limitList = iSaOrderWaresLimitService.listWaresList(cuMember.getPkId(), specialArea, limitDate, new ArrayList<>(waresNumMap.keySet()));
if (CollectionUtil.isNotEmpty(limitList)) {
for (SaOrderWaresLimitExt waresLimitExt : limitList) {
Integer waresNum = waresNumMap.get(waresLimitExt.getWaresCode());
if (null != waresNum
&& waresNum + waresLimitExt.getWaresQuantity() > 50) {
throw new ServiceException("商品【" + waresLimitExt.getWaresName() + "】每月限购50件");
&& waresNum + waresLimitExt.getWaresQuantity() > limitNum) {
throw new ServiceException("商品【" + waresLimitExt.getWaresName() + "】每月限购 \" + limitNum + \" ");
}
}
}

View File

@ -1,51 +0,0 @@
package com.hzs.sale.index.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 我的市场一下详情VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/9 14:34
* @Classname: CuMemberMyMarketVO
* @Package_name: com.hzs.member.base.vo
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberMyMarketDetailVO implements Serializable {
private static final long serialVersionUID = -2715842187394176784L;
/**
* 国家
*/
private Integer pkCountry;
/**
*
*/
private Integer province;
/**
*
*/
private Integer city;
/**
*
*/
private Integer county;
/**
* 点亮名称
*/
private String lightName;
}

View File

@ -1,54 +0,0 @@
package com.hzs.sale.index.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 我的市场VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/9 14:34
* @Classname: CuMemberMyMarketVO
* @Package_name: com.hzs.member.base.vo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberMyMarketVO implements Serializable {
private static final long serialVersionUID = -2715842187394176784L;
/**
* 国家数
*/
private Integer countryNum;
/**
* 地区数
*/
private Integer regionNum;
/**
* 我的国家数
*/
private Integer myCountryNum;
/**
* 我的地区数
*/
private Integer myRegionNum;
/**
* 国家点亮名称
*/
private String countryLightName;
/**
* 市场详情
*/
private List<CuMemberMyMarketDetailVO> myMarketDetailVOList;
}

View File

@ -5,8 +5,6 @@ import com.hzs.common.domain.sale.ext.SaDeliverItemsExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.sale.index.vo.CuMemberMyMarketDetailVO;
import com.hzs.sale.index.vo.CuMemberMyMarketVO;
import com.hzs.sale.order.param.*;
import com.hzs.sale.order.vo.*;
import org.apache.ibatis.annotations.Param;
@ -229,25 +227,6 @@ public interface SaOrderMapper extends BaseMapper<SaOrder> {
*/
List<Integer> queryOrderType(@Param("memberId") Long memberId, @Param("pkCountry") Integer pkCountry);
/**
* 会员首页我的市场
*
* @param pkMember 用户ID
* @param pkCountry 国家ID
* @return
*/
CuMemberMyMarketVO selectMyMarket(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);
/**
* 会员首页我的市场
*
* @param pkMember 用户ID
* @param pkCountry 国家ID
* @return
*/
List<CuMemberMyMarketDetailVO> selectMyMarketDetail(@Param("pkMember") Long pkMember, @Param("pkCountry") Integer pkCountry);
/**
* 查询指定数量会员SEQ
*

View File

@ -10,9 +10,6 @@ import java.util.List;
/**
* 会员商品限购 Mapper 接口
*
* @author hzs
* @since 2025-03-11
*/
public interface SaOrderWaresLimitMapper extends BaseMapper<SaOrderWaresLimit> {

View File

@ -9,7 +9,6 @@ import com.hzs.common.domain.sale.ext.*;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.sale.index.vo.CuMemberMyMarketVO;
import com.hzs.sale.order.param.*;
import com.hzs.sale.order.vo.*;
import com.hzs.system.config.dto.GradeDTO;
@ -536,16 +535,6 @@ public interface ISaOrderService extends IService<SaOrder> {
*/
void waresSalesAccrual(List<WaresNumberParam> waresNumberParamList);
/**
* 会员首页我的市场
*
* @param pkMember 用户ID
* @param pkCountry 国家ID
* @return
*/
CuMemberMyMarketVO selectMyMarket(Long pkMember, Integer pkCountry);
/**
* 查询指定数量会员SEQ
*

View File

@ -47,8 +47,6 @@ import com.hzs.member.base.IMemberServiceApi;
import com.hzs.member.detail.ICuMemberDetailServiceApi;
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
import com.hzs.sale.deliver.service.ISaDeliverItemsService;
import com.hzs.sale.index.vo.CuMemberMyMarketDetailVO;
import com.hzs.sale.index.vo.CuMemberMyMarketVO;
import com.hzs.sale.order.dto.OrderQueryChargeDTO;
import com.hzs.sale.order.mapper.SaOrderMapper;
import com.hzs.sale.order.param.*;
@ -60,7 +58,6 @@ import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.ICountryServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.CountryDTO;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
@ -1752,30 +1749,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
}
}
@Override
public CuMemberMyMarketVO selectMyMarket(Long pkMember, Integer pkCountry) {
//查询全国市场
CuMemberMyMarketVO cuMemberMyMarketVO = baseMapper.selectMyMarket(null, pkCountry);
CountryDTO country = countryServiceApi.getCountry(pkCountry).getData();
//查询市场分布
List<CuMemberMyMarketDetailVO> cuMemberMyMarketDetailVOList = baseMapper.selectMyMarketDetail(pkMember, pkCountry);
cuMemberMyMarketVO.setMyMarketDetailVOList(cuMemberMyMarketDetailVOList);
//查询我的市场
if (CollectionUtil.isNotEmpty(cuMemberMyMarketDetailVOList)) {
List<Integer> countryNmus = cuMemberMyMarketDetailVOList.stream().map(CuMemberMyMarketDetailVO::getPkCountry).distinct().collect(Collectors.toList());
cuMemberMyMarketVO.setMyCountryNum(countryNmus.size());
cuMemberMyMarketVO.setMyRegionNum(cuMemberMyMarketDetailVOList.size());
} else {
cuMemberMyMarketVO.setMyCountryNum(1);
cuMemberMyMarketVO.setMyRegionNum(0);
}
//海外暂时点亮国家
if (!pkCountry.equals(CountryConstants.CHINA_COUNTRY)) {
cuMemberMyMarketVO.setMyMarketDetailVOList(Collections.singletonList(CuMemberMyMarketDetailVO.builder().lightName(country.getLightName()).build()));
}
return cuMemberMyMarketVO;
}
@Override
public List<Long> querySeqList(Integer param) {
return baseMapper.querySeqList(param);
@ -2208,8 +2181,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 当前会员等级
BdGrade memberGrade = gradeList.stream().filter(tmpGrade -> tmpGrade.getPkId().equals(updateGradeMember.getPkSettleGrade())).findFirst().get();
if (memberGrade.getGradeValue().compareTo(EGrade.MAKER.getValue()) >= 0) {
// 会员等级大于等于V3卓越不能通过升级进行购买了
if (memberGrade.getGradeValue().compareTo(EGrade.BRANCH_COMPANY.getValue()) >= 0) {
// 会员等级大于等于分公司不能通过升级进行购买了
throw new ServiceException("当前已经是可以购买的最高等级");
}
@ -2226,15 +2199,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return bdGrade;
}
/**
* 根据盒数计算等级
*
* @param boxTotal 总盒数
* @param gradeList 等级列表可为空
* @param memberGrade 当前等级 -- 为空则为注册不为空则为升级
* @param checkUpgrade 校验升级
* @return
*/
@Override
public BdGrade getGradeByBox(final Integer boxTotal, List<BdGrade> gradeList, BdGrade memberGrade, boolean checkUpgrade) {
if (CollectionUtil.isEmpty(gradeList)) {
@ -2243,9 +2207,11 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (null == memberGrade) {
// 注册处理
// 小于V4等级 并且 升级盒数小于购买盒数的最大一个等级为注册等级
// 小于总公司等级 并且 排除高级店主 并且 升级盒数小于购买盒数的最大一个等级为注册等级
return gradeList.stream()
.filter(tmpGrade -> tmpGrade.getGradeValue() < EGrade.VIP.getValue() && tmpGrade.getBoxNumber() <= boxTotal)
.filter(tmpGrade -> tmpGrade.getGradeValue() != EGrade.S_VIP.getValue()
&& tmpGrade.getGradeValue() < EGrade.COMPANY.getValue()
&& tmpGrade.getBoxNumber() <= boxTotal)
.max(Comparator.comparingInt(BdGrade::getGradeValue)).get();
} else {
// 非注册处理
@ -2263,8 +2229,9 @@ 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() != EGrade.S_VIP.getValue() && tmpGrade.getGradeValue() > memberGrade.getGradeValue())
.sorted(Comparator.comparingInt(BdGrade::getGradeValue).reversed())
.filter(tmpGrade -> tmpGrade.getBoxNumber() != 0)
.filter(tmpGrade -> tmpGrade.getBoxNumber() <= boxTotal).findFirst();

View File

@ -12,9 +12,6 @@ import java.util.List;
/**
* 会员商品限购 服务实现类
*
* @author hzs
* @since 2025-03-11
*/
@Service
public class SaOrderWaresLimitServiceImpl extends ServiceImpl<SaOrderWaresLimitMapper, SaOrderWaresLimit> implements ISaOrderWaresLimitService {

View File

@ -1159,57 +1159,6 @@
order by order_type
</select>
<select id="selectMyMarket" resultType="com.hzs.sale.index.vo.CuMemberMyMarketVO">
select count(distinct o.pk_country) countryNum,
count(distinct o.rec_province) regionNum
from sa_order o
where o.del_flag = 0
and o.order_status = 1
<if test="pkMember != null">
and o.pk_member in
(select m.pk_id
from cu_member m
where m.del_flag = 0
and m.pay_status = 1
and m.category = 0
and m.pk_settle_country = #{pkCountry}
start with m.pk_id = #{pkMember}
connect by prior m.pk_id = m.pk_parent)
</if>
<if test="pkCountry != null">
and o.pk_country = #{pkCountry}
</if>
</select>
<select id="selectMyMarketDetail" resultType="com.hzs.sale.index.vo.CuMemberMyMarketDetailVO">
select distinct o.pk_country pkCountry,
o.rec_province province,
a.light_name lightName
from sa_order o
left join bd_area a
on o.rec_province = a.pk_id
and a.del_flag = 0
and a.enable_state = 0
where 1 = 1
<if test="pkMember != null">
and o.pk_member in
(select m.pk_id
from cu_member m
where m.del_flag = 0
and m.pay_status = 1
and m.category = 0
and m.pk_settle_country = #{pkCountry}
start with m.pk_id = #{pkMember}
connect by prior m.pk_id = m.pk_parent)
</if>
and o.del_flag = 0
and o.order_status = 1
and o.rec_province is not null
<if test="pkCountry != null">
and o.pk_country = #{pkCountry}
</if>
</select>
<!-- 查询指定数量订单SEQ -->
<select id="querySeqList" resultType="long">

View File

@ -2,19 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.system.base.mapper.BdAreaMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.base.BdArea">
<id column="PK_ID" property="pkId"/>
<result column="NAME" property="name"/>
<result column="CODE" property="code"/>
<result column="PARENT" property="parent"/>
<result column="ENABLE_STATE" property="enableState"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
</resultMap>
</mapper>

View File

@ -10,9 +10,9 @@ import java.util.List;
public class RetailConstants {
/**
* 直推拿80
* 直推拿
*/
public static final BigDecimal FIRST_DIRECT = new BigDecimal("80");
public static final BigDecimal FIRST_DIRECT = new BigDecimal("60");
/**
* 间推拿20
*/
@ -34,6 +34,22 @@ public class RetailConstants {
*/
public static final BigDecimal FIRST_COMPANY = new BigDecimal("20");
/**
* 会员VIP合伙人 每月可购买1套4盒
*/
public static final Integer V1_LIMIT = 1;
/**
* 博羚店主高级店主 每月可购买10套40盒
*/
public static final Integer V4_LIMIT = 10;
/**
* 分公司 每月可购买25套100盒
*/
public static final Integer V6_LIMIT = 25;
/**
* 总公司 不限购给一个很大的值
*/
public static final Integer V7_LIMIT = 10000;
/**
* 盒数产品列表

View File

@ -50,7 +50,7 @@ public enum EGrade {
*/
VIP(5, 60, "V4", 0, EnumsPrefixConstants.GRADE + "60", MemberFrameworkConstants.VIP),
/**
* 高级店主
* 高级店主博羚店主 + 推荐1个博羚店主
*/
S_VIP(6, 70, "V5", 0, EnumsPrefixConstants.GRADE + "70", MemberFrameworkConstants.S_VIP),

View File

@ -11,12 +11,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 会员转账表
* </p>
*
* @author hzs
* @since 2022-09-06
*/
@Data
@Builder

View File

@ -2,14 +2,9 @@ package com.hzs.common.domain.system.base;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data;
@ -61,15 +56,9 @@ public class BdArea extends BaseEntity {
private Integer enableState;
/**
* 是否点亮 0 1
* 可绑定数量区1市1省2直辖3
*/
@TableField("IS_ILLUMINATE")
private Integer isIlluminate;
/**
* 点亮名称
*/
@TableField("LIGHT_NAME")
private String lightName;
@TableField("BIND_NUM")
private Integer bindNum;
}