forked from angelo/java-retail-app
## 购买博羚店主,添加推荐人升级高级店主处理;
This commit is contained in:
parent
d4ce7fb9c2
commit
e3dc6b251f
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算手续费金额
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 获取转账配置
|
||||
*
|
||||
|
@ -90,7 +54,7 @@ public interface ICuMemberTransferService extends IService<CuMemberTransfer> {
|
|||
* @param toMemberAccount 转入的账户信息
|
||||
* @return Integer
|
||||
*/
|
||||
Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount,CuMemberAccount toMemberAccount);
|
||||
Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount, CuMemberAccount toMemberAccount);
|
||||
|
||||
/**
|
||||
* 根据条件查询转账列表
|
||||
|
|
|
@ -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};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,19 +26,6 @@
|
|||
<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.*,
|
||||
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
@ -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>
|
||||
|
|
|
@ -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());
|
||||
// 商品数量map(key: 商品编号,value: 商品数量)
|
||||
Map<String, Integer> waresNumMap = new HashMap<>();
|
||||
// 商品信息map(key: 商品编号,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 + \" 件");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -10,9 +10,6 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* 会员商品限购 Mapper 接口
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2025-03-11
|
||||
*/
|
||||
public interface SaOrderWaresLimitMapper extends BaseMapper<SaOrderWaresLimit> {
|
||||
|
||||
|
|
|
@ -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
|
||||
*
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -12,9 +12,6 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* 会员商品限购 服务实现类
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2025-03-11
|
||||
*/
|
||||
@Service
|
||||
public class SaOrderWaresLimitServiceImpl extends ServiceImpl<SaOrderWaresLimitMapper, SaOrderWaresLimit> implements ISaOrderWaresLimitService {
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 盒数产品列表
|
||||
|
|
|
@ -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),
|
||||
|
||||
|
|
|
@ -11,12 +11,7 @@ import lombok.*;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员转账表
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-09-06
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue