3
0
Fork 0

Compare commits

...

12 Commits

68 changed files with 444 additions and 1985 deletions

View File

@ -61,12 +61,7 @@ public interface IMemberServiceApi {
* @param pkApprove 审核人
* @param saOrder 销售订单
*/
R<Boolean> singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO);
/**
* 自助撤单-注册单撤单
**/
R<Boolean> singleRevokeMemberBySelfRevokeOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO);
R<Boolean> singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO, boolean selfBool);
/**
* 撤销订单需要更新会员合并撤单直接删除会员
@ -391,4 +386,13 @@ public interface IMemberServiceApi {
*/
R<Map<Integer, CuMemberRetailRegion>> listEffectiveRegion(Date queryDate);
/**
* 校验手机号必须唯一
*
* @param phone 联系方式
* @param parentCode 推荐编号
* @return 返回为null则正常否则则错误信息
*/
R<String> checkRegisterRelation(String phone, String parentCode);
}

View File

@ -1,7 +1,6 @@
package com.hzs.member.detail;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.base.CuMemberRegister;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import java.util.List;
@ -16,9 +15,10 @@ public interface ICuMemberDetailServiceApi {
*
* @param pkMember 会员ID
* @param pkOrder 订单ID可为null
* @param notUpType 不查询的升级方式可为null
* @return
*/
R<CuMemberLevel> getLastUpgrade(Long pkMember, Long pkOrder);
R<CuMemberLevel> getLastUpgrade(Long pkMember, Long pkOrder, Integer notUpType);
/**
* 查询所有升级记录
@ -28,12 +28,4 @@ public interface ICuMemberDetailServiceApi {
*/
R<List<CuMemberLevel>> getUpgradeList(Long pkMember);
/**
* 查询会员注册信息
*
* @param pkMember 会员ID
* @return
*/
R<CuMemberRegister> getMemberRegister(Long pkMember);
}

View File

@ -2,9 +2,7 @@ package com.hzs.sale.order;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.ext.CuMemberAccountExt;
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.common.domain.sale.order.SaOrderItems;
import com.hzs.sale.order.dto.*;
@ -75,15 +73,6 @@ public interface ISaOrderServiceApi {
**/
R<List<SaOrderExt>> selfAddressOrderList(String orderCode, Integer editType, Long memberId, Integer pkCountry);
/**
* 批量保存订单
*
* @param orderList 订单列表需要pk_id
* @param orderItemsList 订单明细列表
* @return
*/
R<?> saveOrderBatch(List<SaOrder> orderList, List<SaOrderItems> orderItemsList);
/**
* 查询注册订单数量
*

View File

@ -2,11 +2,8 @@ package com.hzs.system.base;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.base.ext.BdCubasdocExt;
import com.hzs.common.domain.system.sys.SysCorp;
import com.hzs.system.base.dto.CurrencyDTO;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@ -45,19 +42,6 @@ public interface ICurrencyServiceApi {
*/
R<BdStorehouse> queryBdStorehouseByProvince(Integer province, Integer... type);
/**
* 根据省查询对应的发货仓库
*/
R<BdStorehouse> queryBdStorehouseById(Integer pkId);
/**
* 根据省查询对应的发货仓库
*
* @param provinceList 省列表
* @return
*/
R<List<BdStorehouse>> queryBdStorehouseMapByProvince(Collection<Integer> provinceList);
/**
* 根据id 查询所属历史币种
*
@ -70,23 +54,4 @@ public interface ICurrencyServiceApi {
*/
R<List<CurrencyDTO>> findAll();
/**
* 提供查询供应商的dubbo调用
*/
R<BdCubasdocExt> queryBdCubasdocById(Integer pkId, Integer pkCountry);
/**
* 提供查询供应商的dubbo调用
*/
R<BdCubasdocExt> queryBdCustomerById(Integer pkId, Integer pkCountry);
/**
* 提供查询采购组织的dubbo调用
*/
R<SysCorp> querySysCorp(Integer pkId, Integer pkCountry);
/**
* 根据仓库主键查询仓库
*/
R<List<BdStorehouse>> queryStorehouseByIds(Set<Integer> storehouseIdSet, Integer pkCountry, Integer pkCorp);
}

View File

@ -283,6 +283,19 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
@Param("checkEmpty") Boolean checkEmpty,
@Param("excludeMemberEmpty") Long excludeMemberEmpty);
/**
* 校验会员编号是否存在
*
* @param phoneList 会员联系方式列表
* @param checkEmpty 是否需要校验批量空单数据
* @param excludeMemberEmpty 排除的批次
* @return
*/
List<MemberCountDTO> checkMemberPhoneExist(@Param("phoneList") Collection<String> phoneList,
@Param("checkEmpty") Boolean checkEmpty,
@Param("excludeMemberEmpty") Long excludeMemberEmpty);
/**
* 查询全部用户
*

View File

@ -78,9 +78,9 @@ public class MemberServiceProvider implements IMemberServiceApi {
}
@Override
public R<Boolean> singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) {
public R<Boolean> singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO, boolean selfBool) {
try {
if (iCuMemberBusinessService.singleRevokeMemberByRegisterOrder(pkApprove, saOrder, businessCommissionDTO)) {
if (iCuMemberBusinessService.singleRevokeMemberByRegisterOrder(pkApprove, saOrder, businessCommissionDTO, selfBool)) {
return R.ok();
}
return R.fail("会员信息处理失败");
@ -90,16 +90,6 @@ public class MemberServiceProvider implements IMemberServiceApi {
}
}
@Override
public R<Boolean> singleRevokeMemberBySelfRevokeOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) {
try {
return R.ok(iCuMemberBusinessService.singleRevokeMemberBySelfRevokeOrder(pkApprove, saOrder, businessCommissionDTO));
} catch (Exception e) {
log.error("singleRevokeMemberBySelfRevokeOrder error msg: {}", e.getMessage(), e);
return R.ok(false);
}
}
@Override
public R<Boolean> mergeRevokeMemberByRegisterOrder(Long pkApprove, List<Long> memberList, Map<Long, SaOrderExt> saOrderMap, BusinessCommissionDTO businessCommissionDTO) {
try {
@ -386,4 +376,9 @@ public class MemberServiceProvider implements IMemberServiceApi {
return R.ok(regionMap);
}
@Override
public R<String> checkRegisterRelation(String phone, String parentCode) {
return R.ok(iCuMemberService.checkRegisterRelation(phone, parentCode));
}
}

View File

@ -83,13 +83,10 @@ public interface ICuMemberBusinessService {
*
* @param pkApprove 审核人
* @param saOrder 销售订单
* @param selfBool 是否自助撤单
*/
Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO);
/**
* 自助撤单-注册单撤单
**/
Boolean singleRevokeMemberBySelfRevokeOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO);
Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder,
BusinessCommissionDTO businessCommissionDTO, boolean selfBool);
/**

View File

@ -488,6 +488,16 @@ public interface ICuMemberService extends IService<CuMember> {
*/
Map<String, Integer> checkMemberCodeExist(Collection<String> codeList, Boolean checkEmpty, Long excludeMemberEmpty);
/**
* 校验会员联系方式是否存在
*
* @param phoneList 会员联系方式列表
* @param checkEmpty 是否需要校验批量空单数据
* @param excludeMemberEmpty 排除的批次
* @return
*/
Map<String, Integer> checkMemberPhoneExist(Collection<String> phoneList, Boolean checkEmpty, Long excludeMemberEmpty);
/**
* 查询全部用户
*
@ -789,8 +799,6 @@ public interface ICuMemberService extends IService<CuMember> {
CuMember getRetailTopMember(Long pkMember, String memberCode, Long topPkMember, String topMemberCode);
/**
* 校验注册关系是否跨团队
* 2024.12.24 修改为校验手机号必须唯一9035
* 根据推荐人编号校验手机号必须唯一
*
* @param phone 联系方式
@ -807,6 +815,7 @@ public interface ICuMemberService extends IService<CuMember> {
* @return
*/
String checkRegisterRelation(String phone, Long pkParent);
String checkRegisterRelation(String phone, Integer systemType);
/**
* 添加等级升级记录

View File

@ -33,7 +33,6 @@ import com.hzs.common.domain.sale.ext.SaOrderExt;
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.domain.third.pay.TOnlinePayment;
import com.hzs.common.util.TransactionUtils;
import com.hzs.member.account.dto.BusinessCommissionDTO;
@ -558,7 +557,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) {
public Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder,
BusinessCommissionDTO businessCommissionDTO, boolean selfBool) {
deductCancelOrderCost(businessCommissionDTO);
Date currentDateTime = DateUtils.currentDateTime();
@ -566,51 +566,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
// 会员账号 验证会员账户是否存在金额
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());
iCuMemberService.updateById(member);
// 撤销正常订单修改 cu_member_register 账户状态为死点
CuMemberRegister cuMemberRegister = new CuMemberRegister();
cuMemberRegister.setPkMember(member.getPkId());
cuMemberRegister.setPkCountry(saOrder.getPkCountry());
cuMemberRegister.setPkModified(saOrder.getPkCreator());
iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister);
}
// 处理推荐人等级
handleParentLevel(saOrder, currentDateTime);
// 删除会员区域
iCuMemberRetailRegionService.update(Wrappers.<CuMemberRetailRegion>lambdaUpdate()
.eq(CuMemberRetailRegion::getPkMember, saOrder.getPkMember())
.set(CuMemberRetailRegion::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberRetailRegion::getModifiedTime, currentDateTime)
);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
// 默认回退给创建人
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} else {
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean singleRevokeMemberBySelfRevokeOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) {
deductCancelOrderCost(businessCommissionDTO);
Date currentDateTime = DateUtils.currentDateTime();
// 回退给创建人
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
// 会员账号 验证会员账户是否存在金额
CuMember member = iCuMemberService.getMember(saOrder.getPkMember());
//删除会员
if (selfBool) {
// 自助撤单删除会员相关信息
LambdaUpdateWrapper<CuMember> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(CuMember::getMemberCode, CommonUtil.deleteMemberCode(member.getMemberCode()));
updateWrapper.set(CuMember::getDelFlag, EDelFlag.DELETE.getValue());
@ -625,18 +582,34 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
updateWrapperRegister.set(CuMemberRegister::getPkModified, saOrder.getPkModified());
updateWrapperRegister.eq(CuMemberRegister::getPkMember, member.getPkId());
iCuMemberRegisterService.update(updateWrapperRegister);
} else {
// 非自助撤单会员变为死点
member.setCategory(ECategory.LOGGED_OUT.getValue());
member.setCustomerType(ECustomerType.DEAD_POINT.getValue());
member.setPkModified(saOrder.getPkModified());
member.setModifiedTime(DateUtils.currentDateTime());
iCuMemberService.updateById(member);
// 撤销正常订单修改 cu_member_register 账户状态为死点
CuMemberRegister cuMemberRegister = new CuMemberRegister();
cuMemberRegister.setPkMember(member.getPkId());
cuMemberRegister.setPkCountry(saOrder.getPkCountry());
cuMemberRegister.setPkModified(saOrder.getPkCreator());
iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister);
}
}
// 处理推荐人等级
handleParentLevel(saOrder, currentDateTime);
handleParentLevelCancel(saOrder, currentDateTime);
// 删除会员区域
iCuMemberRetailRegionService.update(Wrappers.<CuMemberRetailRegion>lambdaUpdate()
.eq(CuMemberRetailRegion::getPkMember, saOrder.getPkMember())
.set(CuMemberRetailRegion::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberRetailRegion::getModifiedTime, currentDateTime)
);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
// 默认回退给创建人
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} else {
// 在线支付处理退款
@ -902,10 +875,12 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
if (EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
// 升级订单
// 回退等级
iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
// 如果会员等级非代理则需要删除会员区域
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
// 处理会员自己等级撤单
gradeDTO = this.handleSelfCancel(gradeDTO, cuMember, saOrder, pkApprove, currentDateTime);
// 如果会员等级非代理则需要删除会员区域
if (gradeDTO.getGradeValue() != EGrade.REGION.getValue()
&& gradeDTO.getGradeValue() != EGrade.DIRECTOR.getValue()) {
// 删除会员区域选择
@ -924,6 +899,9 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
.set(CuMemberRetailRegion::getModifiedTime, currentDateTime)
);
}
// 删除购买升级的升级记录
iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
}
// 更新会员标记如果是则更新会员信息
@ -934,8 +912,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
}
// 处理推荐人等级
this.handleParentLevel(saOrder, currentDateTime);
// 处理推荐人等级撤单
this.handleParentLevelCancel(saOrder, currentDateTime);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
@ -1509,9 +1487,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 保存会员等级变动
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0);
if (EGrade.VIP.getValue() == gradeDTO.getGradeValue()
|| EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 店主代理级别判断处理区域
if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 代理级别判断处理区域
if (null != saOrder.getRegionProvince()
&& null != saOrder.getRegionCity()) {
iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder()
@ -1532,18 +1509,14 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Transactional(rollbackFor = Exception.class)
@Override
public void updateRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt) {
// 更新会员信息
updateCuMember(cuMember);
// 会员等级
// 会员新等级
GradeDTO gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
if (!cuMember.getPkSettleGrade().equals(saOrder.getPkGradeOld())) {
// 保存会员等级变动如果旧等级和新等级相同则不记录
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld());
if (EGrade.VIP.getValue() == gradeDTO.getGradeValue()
|| EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 店主代理级别判断处理区域
if (EGrade.REGION.getValue() == gradeDTO.getGradeValue()) {
// 代理级别判断处理区域
if (null != saOrder.getRegionProvince()
&& null != saOrder.getRegionCity()) {
iCuMemberRetailRegionService.mergeMemberRetailRegion(CuMemberRetailRegion.builder()
@ -1554,11 +1527,16 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
.build());
}
}
// 判断处理会员自己等级下级有店主代理自己判断是否升级高级店主董事代理
this.handleSelfUpgrade(gradeDTO, cuMember, saOrder.getPayTime());
}
// 更新会员信息
updateCuMember(cuMember);
// 判断处理推荐人等级
// 判断处理推荐人等级自己是店主代理判断推荐人是否升级高级店主董事代理
handleParentUpgrade(cuMember, saOrder, gradeDTO);
// 处理会员账户
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
}
@ -1616,7 +1594,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
/**
* 判断推送MQ处理推荐人等级
* 处理推荐人等级
*
* @param cuMember
*/
@ -1678,12 +1656,104 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
/**
* 处理推荐人等级
* 处理会员自己等级
*
* @param saOrder
* @param currentDateTime
* @param gradeDTO 新等级
* @param cuMember 会员自己
* @param payTime 订单支付时间升级记录时间
*/
private void handleParentLevel(SaOrderExt saOrder, Date currentDateTime) {
private void handleSelfUpgrade(GradeDTO gradeDTO, CuMember cuMember, Date payTime) {
if (null == gradeDTO) {
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
}
if (gradeDTO.getGradeValue().equals(EGrade.REGION.getValue())) {
// 会员当前是区域代理查询直推是否存在区域代理
SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.REGION.getValue());
if (null != recommendOrder) {
recommendOrder.setPayTime(payTime);
cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.DIRECTOR.getValue(), cuMember.getPkSettleCountry()).getData().getPkId());
saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId());
}
} else if (gradeDTO.getGradeValue().equals(EGrade.VIP.getValue())) {
// 会员当前是博羚店主查询直推是否存在博羚店主
SaOrder recommendOrder = iCuMemberService.listRecommendVipOrder(cuMember.getPkId(), null, EGrade.VIP.getValue());
if (null != recommendOrder) {
recommendOrder.setPayTime(payTime);
cuMember.setPkSettleGrade(iGradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), cuMember.getPkSettleCountry()).getData().getPkId());
saveLevelUpgrade(cuMember, EUpgradeType.AUTO_UPGRADE.getValue(), recommendOrder, gradeDTO.getPkId());
}
}
}
/**
* 处理自己等级撤单
*
* @param gradeDTO
* @param cuMember
* @param saOrder
* @param pkApprove
* @param currentDateTime
* @return
*/
private GradeDTO handleSelfCancel(GradeDTO gradeDTO, CuMember cuMember, SaOrderExt saOrder,
Long pkApprove, Date currentDateTime) {
if (gradeDTO.getGradeValue() == EGrade.S_VIP.getValue()
|| gradeDTO.getGradeValue() == EGrade.DIRECTOR.getValue()) {
// 会员等级为高级店主董事代理需要处理1+1逻辑
// 查询会员所有升级列表
List<CuMemberLevel> memberLevelList = iCuMemberLevelService.list(Wrappers.<CuMemberLevel>lambdaQuery()
.eq(CuMemberLevel::getPkMember, cuMember.getPkId())
.orderByDesc(CuMemberLevel::getUpgradeTime)
);
if (CollectionUtil.isNotEmpty(memberLevelList)) {
// 撤销的订单对应的升级记录
Optional<CuMemberLevel> orderLevelOpt = memberLevelList.stream().filter(
tmpLevel -> null != tmpLevel.getPkOrder()
&& tmpLevel.getPkOrder().equals(saOrder.getPkId())
&& tmpLevel.getUpType().equals(EUpgradeType.BUY_UPGRADE.getValue())
).findFirst();
if (orderLevelOpt.isPresent()) {
// 订单存在对应升级记录
List<Long> pkLevelList = new ArrayList<>();
CuMemberLevel orderLevel = orderLevelOpt.get();
pkLevelList.add(orderLevel.getPkId());
Optional<CuMemberLevel> autoLevelOpt = memberLevelList.stream().filter(
tmpLevel -> tmpLevel.getPkMember().equals(cuMember.getPkId())
&& tmpLevel.getUpType().equals(EUpgradeType.AUTO_UPGRADE.getValue())
&& tmpLevel.getUpgradeTime().equals(orderLevel.getUpgradeTime())
).findFirst();
autoLevelOpt.ifPresent(cuMemberLevel -> pkLevelList.add(cuMemberLevel.getPkId()));
if (pkLevelList.size() > 0) {
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.in(CuMemberLevel::getPkId, pkLevelList)
.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberLevel::getPkModified, pkApprove)
.set(CuMemberLevel::getModifiedTime, currentDateTime)
);
}
// 升级记录中去掉删除的剩下最新的为最后的等级
Optional<CuMemberLevel> lastLevelOpt = memberLevelList.stream()
.filter(tmpLevel -> !pkLevelList.contains(tmpLevel.getPkId()))
.max(Comparator.comparing(CuMemberLevel::getUpgradeTime));
lastLevelOpt.ifPresent(cuMemberLevel -> cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel()));
gradeDTO = iGradeServiceApi.getGrade(cuMember.getPkSettleGrade()).getData();
}
}
}
return gradeDTO;
}
/**
* 撤单处理推荐人等级
*
* @param saOrder 升级订单
* @param currentDateTime 当前时间
*/
private void handleParentLevelCancel(SaOrderExt saOrder, Date currentDateTime) {
// 注册升级订单需要判断是否有推荐人升级的
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
@ -1704,13 +1774,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 推荐人是高级店主查询直推博羚店主以上订单
parentOrder = iCuMemberService.listRecommendVipOrder(parentMember.getPkId(), saOrder.getOrderCode(), EGrade.VIP.getValue());
}
this.handleParentLevelUpdate(parentOrder, parentLevel, parentMember, currentDateTime);
this.handleParentLevelCancelUpdate(parentOrder, parentLevel, parentMember, currentDateTime);
}
}
}
}
private void handleParentLevelUpdate(SaOrder parentOrder, CuMemberLevel parentLevel, CuMemberExt parentMember, Date currentDateTime) {
private void handleParentLevelCancelUpdate(SaOrder parentOrder, CuMemberLevel parentLevel, CuMemberExt parentMember, Date currentDateTime) {
if (null != parentOrder) {
// 存在其它博羚店主订单重新处理升级记录
CuMemberLevel parentNewLevel = BeanUtil.copyProperties(parentLevel, CuMemberLevel.class);

View File

@ -30,7 +30,6 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.wares.BdWaresAuthority;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.system.config.BdTradeWhiteConfig;
import com.hzs.common.security.service.UserTokenService;
import com.hzs.common.security.utils.SecurityUtils;
@ -77,7 +76,6 @@ 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.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -134,6 +132,7 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
private IMemberServiceApi memberServiceApi;
@DubboReference
private IGradeServiceApi gradeService;
@Override
public Boolean saveMember(CuMember cuMember) {
boolean save = false;
@ -2505,6 +2504,19 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
return resultMap;
}
@Override
public Map<String, Integer> checkMemberPhoneExist(Collection<String> phoneList, Boolean checkEmpty, Long excludeMemberEmpty) {
Map<String, Integer> resultMap = new HashMap<>();
List<MemberCountDTO> list = baseMapper.checkMemberPhoneExist(phoneList, checkEmpty, excludeMemberEmpty);
if (CollectionUtil.isNotEmpty(list)) {
for (MemberCountDTO memberCountDTO : list) {
resultMap.put(memberCountDTO.getPhone(), memberCountDTO.getMemberCount());
}
}
return resultMap;
}
@Override
public List<CuMemberExt> findAll() {
return baseMapper.findAll();
@ -3105,10 +3117,7 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
if (null == parentMember) {
return "推荐人不存在";
}
// 2025年6月9日 - 手机号不唯一,在此不做唯一校验 - start
// return this.checkRegisterRelation(phone, parentMember.getSystemType());
return null;
// 2025年6月9日 - 手机号不唯一,在此不做唯一校验 - end
return this.checkRegisterRelation(phone, parentMember.getSystemType());
} else {
return "推荐人不存在";
}
@ -3121,18 +3130,17 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
* @param systemType 系统类型
* @return
*/
private String checkRegisterRelation(String phone, Integer systemType) {
// new 手机号可以重复不需要进行是否重复校验
@Override
public String checkRegisterRelation(String phone, Integer systemType) {
if (this.count(Wrappers.<CuMember>lambdaQuery()
.eq(CuMember::getPhone, phone)
.eq(CuMember::getCategory, ECategory.NORMAL.getValue())
.eq(null != systemType, CuMember::getSystemType, systemType)
) == 0) {
// 手机号不存在可以进行注册
return null;
// if (this.count(Wrappers.<CuMember>lambdaQuery()
// .eq(CuMember::getPhone, phone)
// .eq(CuMember::getCategory, ECategory.NORMAL.getValue())
// .eq(CuMember::getSystemType, systemType)
// ) == 0) {
// // 手机号不存在可以进行注册
// return null;
// }
// return "注册信息已存在,请重新输入注册信息";
}
return "当前联系方式已经存在";
}
@Override

View File

@ -18,10 +18,12 @@ public interface CuMemberLevelMapper extends BaseMapper<CuMemberLevel> {
*
* @param pkMember 会员ID
* @param pkOrder 订单ID可为null
* @param notUpType 不查询的升级方式可为null
* @return
*/
CuMemberLevel getLastUpgrade(@Param("pkMember") Long pkMember,
@Param("pkOrder") Long pkOrder);
@Param("pkOrder") Long pkOrder,
@Param("notUpType") Integer notUpType);
/**
* 查询所有升级记录

View File

@ -1,9 +1,7 @@
package com.hzs.member.detail.provider;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.base.CuMemberRegister;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.member.base.service.ICuMemberRegisterService;
import com.hzs.member.detail.ICuMemberDetailServiceApi;
import com.hzs.member.detail.service.ICuMemberLevelService;
import org.apache.dubbo.config.annotation.DubboService;
@ -19,12 +17,10 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
@Autowired
private ICuMemberLevelService iCuMemberLevelService;
@Autowired
private ICuMemberRegisterService iCuMemberRegisterService;
@Override
public R<CuMemberLevel> getLastUpgrade(Long pkMember, Long pkOrder) {
return R.ok(iCuMemberLevelService.getLastUpgrade(pkMember, pkOrder));
public R<CuMemberLevel> getLastUpgrade(Long pkMember, Long pkOrder, Integer notUpType) {
return R.ok(iCuMemberLevelService.getLastUpgrade(pkMember, pkOrder, notUpType));
}
@Override
@ -32,9 +28,4 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
return R.ok(iCuMemberLevelService.getUpgradeList(pkMember));
}
@Override
public R<CuMemberRegister> getMemberRegister(Long pkMember) {
return R.ok(iCuMemberRegisterService.queryCuMemberRegister(pkMember));
}
}

View File

@ -26,9 +26,10 @@ public interface ICuMemberLevelService extends IService<CuMemberLevel> {
*
* @param pkMember 会员ID
* @param pkOrder 订单ID可为null
* @param notUpType 不查询的升级方式可为null
* @return
*/
CuMemberLevel getLastUpgrade(Long pkMember, Long pkOrder);
CuMemberLevel getLastUpgrade(Long pkMember, Long pkOrder, Integer notUpType);
/**
* 查询所有升级记录

View File

@ -32,8 +32,8 @@ public class CuMemberLevelServiceImpl extends ServiceImpl<CuMemberLevelMapper, C
}
@Override
public CuMemberLevel getLastUpgrade(Long pkMember, Long pkOrder) {
return baseMapper.getLastUpgrade(pkMember, pkOrder);
public CuMemberLevel getLastUpgrade(Long pkMember, Long pkOrder, Integer notUpType) {
return baseMapper.getLastUpgrade(pkMember, pkOrder, notUpType);
}
@Override

View File

@ -12,11 +12,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* @Description: 空单生成会员编号控制器
* @Author: jiang chao
* @Time: 2023/8/29 11:14
* @Classname: CuMemberEmptyCodeController
* @PackageName: com.hzs.member.empty.controller.manage
* 空单生成会员编号控制器
*/
@RequestMapping("/manage/member-empty-code")
@RestController

View File

@ -24,13 +24,11 @@ import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.empty.CuMemberEmpty;
import com.hzs.common.domain.member.empty.CuMemberEmptyDetail;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyDetailExt;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductDTO;
import com.hzs.common.security.service.UserTokenService;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.service.ITransactionCommonService;
import com.hzs.common.util.TransactionUtils;
import com.hzs.member.empty.dto.MemberEmptyDetailDTO;
import com.hzs.member.empty.dto.MemberEmptyProductDTO;
import com.hzs.member.empty.param.MemberEmptyAddParam;
import com.hzs.member.empty.param.MemberEmptySignParam;
import com.hzs.member.empty.param.MemberEmptyQueryParam;
@ -220,21 +218,6 @@ public class CuMemberEmptyController extends BaseController {
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.MISSING_PARAM));
}
}
// 选购产品需要校验产品以及地址信息
if (EYesNo.YES.getIntValue() == detail.getProductFlag()) {
if (StringUtils.isAnyEmpty(detail.getRecName(), detail.getRecPhone(), detail.getRecAddress())
|| null == detail.getRecProvince() || null == detail.getRecCity() || CollectionUtil.isEmpty(detail.getProductList())) {
// 缺少参数
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.MISSING_PARAM));
}
for (MemberEmptyProductDTO product : detail.getProductList()) {
if (StringUtils.isAnyEmpty(product.getSpecsName(), product.getSpecsNameId())
|| null == product.getPkProduct() || null == product.getQuantity()) {
// 缺少参数
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.MISSING_PARAM));
}
}
}
}
if (iMemberEmptyService.updateDate(paramList, SecurityUtils.getUserId(), SecurityUtils.getPkCountry())) {
@ -443,10 +426,6 @@ public class CuMemberEmptyController extends BaseController {
detailDTO.setPkCountryVal(emptyDetail.getCountryName());
detailDTO.setPkSettleCountryVal(emptyDetail.getSettleCountryName());
if (CollectionUtil.isNotEmpty(emptyDetail.getProductDTOList())) {
// 处理产品信息
detailDTO.setProductList(BeanUtil.copyToList(emptyDetail.getProductDTOList(), MemberEmptyProductDTO.class));
}
dataList.add(detailDTO);
}
}
@ -496,25 +475,8 @@ public class CuMemberEmptyController extends BaseController {
detailDTO.setOrderTypeVal(cacheMap.get(EnumsPrefixConstants.ORDER_TYPE + emptyDetail.getOrderType()));
detailDTO.setPointStatusVal(cacheMap.get(EnumsPrefixConstants.POINT_STATUS + emptyDetail.getPointStatus()));
detailDTO.setSettlementFlagVal(cacheMap.get(EnumsPrefixConstants.YES_NO + emptyDetail.getSettlementFlag()));
detailDTO.setProductFlagVal(cacheMap.get(EnumsPrefixConstants.YES_NO + emptyDetail.getProductFlag()));
detailDTO.setAutoFlagVal(cacheMap.get(EnumsPrefixConstants.DEALER_YES_NO + emptyDetail.getAutoFlag()));
// 处理产品显示数据
if (CollectionUtil.isNotEmpty(emptyDetail.getProductDTOList())) {
// 产品信息拼接
StringBuilder productSb = new StringBuilder();
List<CuMemberEmptyProductDTO> productList = emptyDetail.getProductDTOList();
for (CuMemberEmptyProductDTO productDTO : productList) {
productSb.append(productDTO.getProductName())
.append("(")
.append(productDTO.getSpecsName())
.append(") * ")
.append(productDTO.getQuantity())
.append("; \n");
}
detailDTO.setProductStr(productSb.toString());
}
resultList.add(detailDTO);
}
}
@ -548,11 +510,6 @@ public class CuMemberEmptyController extends BaseController {
for (CuMemberEmptyDetailExt emptyDetail : detailList) {
MemberEmptyDetailDTO detailDTO = BeanUtil.copyProperties(emptyDetail, MemberEmptyDetailDTO.class);
// 处理产品信息
if (CollectionUtil.isNotEmpty(emptyDetail.getProductDTOList())) {
detailDTO.setProductList(BeanUtil.copyToList(emptyDetail.getProductDTOList(), MemberEmptyProductDTO.class));
}
paramList.add(detailDTO);
}
@ -600,11 +557,6 @@ public class CuMemberEmptyController extends BaseController {
for (CuMemberEmptyDetailExt emptyDetail : detailList) {
MemberEmptyDetailDTO detailDTO = BeanUtil.copyProperties(emptyDetail, MemberEmptyDetailDTO.class);
// 处理产品信息
if (CollectionUtil.isNotEmpty(emptyDetail.getProductDTOList())) {
detailDTO.setProductList(BeanUtil.copyToList(emptyDetail.getProductDTOList(), MemberEmptyProductDTO.class));
}
paramList.add(detailDTO);
}

View File

@ -11,13 +11,10 @@ import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyDetailExt;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.service.ITransactionCommonService;
import com.hzs.member.empty.param.MemberEmptyRegisterQueryParam;
import com.hzs.member.empty.service.ICuMemberEmptyProductService;
import com.hzs.member.empty.service.ICuMemberEmptyService;
import com.hzs.member.empty.vo.MemberEmptyRegisterQueryProductVO;
import com.hzs.member.empty.vo.MemberEmptyRegisterQueryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -27,14 +24,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 空单注册列表控制器
* @Author: jiang chao
* @Time: 2023/7/6 15:06
* @Classname: CuMemberEmptyRegisterController
* @PackageName: com.hzs.member.empty.controller.manage
* 空单注册列表控制器
*/
@RequestMapping("/manage/member-empty-register")
@RestController
@ -43,8 +35,6 @@ public class CuMemberEmptyRegisterController extends BaseController {
@Autowired
private ICuMemberEmptyService iCuMemberEmptyService;
@Autowired
private ICuMemberEmptyProductService iCuMemberEmptyProductService;
@Autowired
private ITransactionCommonService iTransactionCommonService;
/**
@ -66,19 +56,8 @@ public class CuMemberEmptyRegisterController extends BaseController {
startPage();
List<CuMemberEmptyDetailExt> list = iCuMemberEmptyService.emptyRegisterList(param, pkCountry);
if (CollectionUtil.isNotEmpty(list)) {
// 查询空单批次产品信息
Map<Long, List<CuMemberEmptyProductExt>> productMap = iCuMemberEmptyProductService.queryProductList(list.stream().map(CuMemberEmptyDetailExt::getPkId).collect(Collectors.toList()));
for (CuMemberEmptyDetailExt emptyDetailExt : list) {
MemberEmptyRegisterQueryVO queryVO = BeanUtil.copyProperties(emptyDetailExt, MemberEmptyRegisterQueryVO.class);
// 产品数据处理
List<CuMemberEmptyProductExt> emptyProductList = productMap.get(emptyDetailExt.getPkId());
if (CollectionUtil.isNotEmpty(emptyProductList)) {
queryVO.setDetailList(BeanUtil.copyToList(emptyProductList, MemberEmptyRegisterQueryProductVO.class));
}
resultList.add(queryVO);
}
}
@ -105,10 +84,6 @@ public class CuMemberEmptyRegisterController extends BaseController {
List<CuMemberEmptyDetailExt> list = iCuMemberEmptyService.emptyRegisterList(param, pkCountry);
if (CollectionUtil.isNotEmpty(list)) {
// 查询空单批次产品信息
Map<Long, List<CuMemberEmptyProductExt>> productMap = iCuMemberEmptyProductService.queryProductList(list.stream().map(CuMemberEmptyDetailExt::getPkId).collect(Collectors.toList()));
// 获取翻译内容
Map<String, String> cacheMap = iTransactionCommonService.exportEnumTransaction(EPlaceDept.values(), EOrderSource.values(), EOrderType.values(), EDealerYesNo.values());
Map<Integer, String> dbMap = iTransactionCommonService.exportEnumTransactionByDB(EnumsPrefixConstants.KEY_GRADE, EnumsPrefixConstants.KEY_AWARD);
@ -123,24 +98,6 @@ public class CuMemberEmptyRegisterController extends BaseController {
queryVO.setOrderSourceVal(cacheMap.get(EnumsPrefixConstants.ORDER_SOURCE + queryVO.getOrderSource()));
queryVO.setOrderTypeVal(cacheMap.get(EnumsPrefixConstants.ORDER_TYPE + queryVO.getOrderType()));
queryVO.setSettlementFlagVal(cacheMap.get(EnumsPrefixConstants.DEALER_YES_NO + queryVO.getSettlementFlag()));
queryVO.setProductFlagVal(cacheMap.get(EnumsPrefixConstants.DEALER_YES_NO + queryVO.getProductFlag()));
// 产品信息拼接
StringBuilder productSb = new StringBuilder();
// 产品信息
List<CuMemberEmptyProductExt> emptyProductList = productMap.get(emptyDetailExt.getPkId());
if (CollectionUtil.isNotEmpty(emptyProductList)) {
for (CuMemberEmptyProductExt emptyProduct : emptyProductList) {
productSb.append(emptyProduct.getProductName())
.append("(")
.append(emptyProduct.getSpecsName())
.append(") * ")
.append(emptyProduct.getQuantity())
.append("; \n");
}
}
queryVO.setProductStr(productSb.toString());
resultList.add(queryVO);
}
}

View File

@ -1,38 +0,0 @@
package com.hzs.member.empty.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description:
* @Author: jiang chao
* @Time: 2023/7/4 11:36
* @Classname: CuMemberPhoneDTO
* @PackageName: com.hzs.member.empty.dto
*/
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class EmptyMemberDTO {
/**
* 联系方式
*/
private String phone;
/**
* 结算国家
*/
private Integer pkSettleCountry;
/**
* 明细数据
*/
private List<EmptyMemberDetailDTO> detailList;
}

View File

@ -1,31 +0,0 @@
package com.hzs.member.empty.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description: 查询会员明细DTO
* @Author: jiang chao
* @Time: 2023/7/4 11:36
* @Classname: CuMemberPhoneDetailDTO
* @PackageName: com.hzs.member.empty.dto
*/
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class EmptyMemberDetailDTO {
/**
* 会员编号
*/
private String memberCode;
/**
* 会员名称
*/
private String memberName;
}

View File

@ -6,7 +6,6 @@ import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 空单注册明细DTO
@ -173,71 +172,6 @@ public class MemberEmptyDetailDTO {
@Excel(name = "上传业绩")
private BigDecimal transferAchieve;
/**
* 选购产品0=1=
*/
@Transaction(transactionKey = EnumsPrefixConstants.YES_NO)
private Integer productFlag;
/**
* 选购产品显示
*/
@Excel(name = "选购产品")
private String productFlagVal;
/**
* 产品拼装导出使用
*/
@Excel(name = "产品信息")
private String productStr;
/**
* 收货人
*/
@Excel(name = "收货人")
private String recName;
/**
* 联系方式
*/
@Excel(name = "联系方式")
private String recPhone;
/**
*
*/
private Integer recProvince;
/**
*
*/
@Excel(name = "")
private String recProvinceVal;
/**
*
*/
private Integer recCity;
/**
*
*/
@Excel(name = "")
private String recCityVal;
/**
*
*/
private Integer recCounty;
/**
*
*/
@Excel(name = "")
private String recCountyVal;
/**
* 详细地址
*/
@Excel(name = "详细地址")
private String recAddress;
/**
* 是否激活标记0=1=
*/
@ -271,9 +205,4 @@ public class MemberEmptyDetailDTO {
@Excel(name = "生成备注")
private String remark;
/**
* 产品列表
*/
private List<MemberEmptyProductDTO> productList;
}

View File

@ -1,45 +0,0 @@
package com.hzs.member.empty.dto;
import lombok.Data;
/**
* @Description: 空单产品DTO
* @Author: jiang chao
* @Time: 2023/6/19 14:45
* @Classname: CuMemberEmptyProductDTO
* @PackageName: com.hzs.member.empty.dto
*/
@Data
public class MemberEmptyProductDTO {
/**
* 产品ID
*/
private Integer pkProduct;
/**
* 产品编号
*/
private String productCode;
/**
* 产品名称
*/
private String productName;
/**
* 产品规格
*/
private String specsName;
/**
* 产品规格ID
*/
private String specsNameId;
/**
* 产品数量
*/
private Integer quantity;
}

View File

@ -11,9 +11,6 @@ import java.util.List;
/**
* 空单批次 Mapper 接口
*
* @author hzs
* @since 2023-06-16
*/
public interface CuMemberEmptyMapper extends BaseMapper<CuMemberEmpty> {
@ -45,5 +42,4 @@ public interface CuMemberEmptyMapper extends BaseMapper<CuMemberEmpty> {
*/
String queryLastCode();
}

View File

@ -2,46 +2,10 @@ package com.hzs.member.empty.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductExt;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 空单批次明细产品 Mapper 接口
*
* @author hzs
* @since 2023-08-28
*/
public interface CuMemberEmptyProductMapper extends BaseMapper<CuMemberEmptyProduct> {
/**
* 批量删除会员空单产品
*
* @param emptyProductList 空单产品数据
* @param pkMemberEmpty 空单批次ID
* @param userId 当前会员
* @return
*/
int deleteBatch(@Param("emptyProductList") List<CuMemberEmptyProduct> emptyProductList,
@Param("pkMemberEmpty") Long pkMemberEmpty,
@Param("userId") Long userId);
/**
* 批量插入会员空单产品
*
* @param emptyProductList 空单产品数据
* @param userId 当前会员
* @return
*/
int insertOrUpdateBatch(@Param("emptyProductList") List<CuMemberEmptyProduct> emptyProductList, @Param("userId") Long userId);
/**
* 查询空单明细产品信息列表
*
* @param emptyDetailIdList 空单明细ID列表
* @return
*/
List<CuMemberEmptyProductExt> queryProductList(@Param("emptyDetailIdList") List<Long> emptyDetailIdList);
}

View File

@ -10,9 +10,6 @@ import java.util.List;
/**
* 空单批次明细 服务类
*
* @author hzs
* @since 2023-06-16
*/
public interface ICuMemberEmptyDetailService extends IService<CuMemberEmptyDetail> {

View File

@ -2,44 +2,11 @@ package com.hzs.member.empty.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductExt;
import java.util.List;
import java.util.Map;
/**
* 空单批次明细产品 服务类
*
* @author hzs
* @since 2023-08-28
*/
public interface ICuMemberEmptyProductService extends IService<CuMemberEmptyProduct> {
/**
* 批量删除会员空单产品
*
* @param emptyProductList 空单产品数据
* @param pkMemberEmpty 空单批次ID
* @param userId 当前会员
* @return
*/
int deleteBatch(List<CuMemberEmptyProduct> emptyProductList, Long pkMemberEmpty, Long userId);
/**
* 批量插入会员空单产品
*
* @param emptyProductList 空单产品数据
* @param userId 当前会员
* @return
*/
int insertOrUpdateBatch(List<CuMemberEmptyProduct> emptyProductList, Long userId);
/**
* 查询空单明细产品信息列表
*
* @param emptyDetailIdList 空单明细ID列表
* @return
*/
Map<Long, List<CuMemberEmptyProductExt>> queryProductList(List<Long> emptyDetailIdList);
}

View File

@ -9,11 +9,7 @@ import com.hzs.system.sys.dto.LoginUser;
import java.util.List;
/**
* @Description: 空单处理服务
* @Author: jiang chao
* @Time: 2023/6/17 14:07
* @Classname: IMemberEMptyService
* @PackageName: com.hzs.member.empty.service
* 空单处理服务
*/
public interface IMemberEmptyService {

View File

@ -7,14 +7,12 @@ import com.hzs.common.core.enums.EDelFlag;
import com.hzs.common.domain.member.empty.CuMemberEmpty;
import com.hzs.common.domain.member.empty.CuMemberEmptyCode;
import com.hzs.common.domain.member.empty.CuMemberEmptyDetail;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyDetailExt;
import com.hzs.member.empty.dto.MemberEmptyDetailDTO;
import com.hzs.member.empty.mapper.CuMemberEmptyDetailMapper;
import com.hzs.member.empty.param.MemberEmptyAddParam;
import com.hzs.member.empty.service.ICuMemberEmptyCodeService;
import com.hzs.member.empty.service.ICuMemberEmptyDetailService;
import com.hzs.member.empty.service.ICuMemberEmptyProductService;
import com.hzs.member.empty.service.ICuMemberEmptyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -25,9 +23,6 @@ import java.util.stream.Collectors;
/**
* 空单批次明细 服务实现类
*
* @author hzs
* @since 2023-06-16
*/
@Service
public class CuMemberEmptyDetailServiceImpl extends ServiceImpl<CuMemberEmptyDetailMapper, CuMemberEmptyDetail> implements ICuMemberEmptyDetailService {
@ -36,8 +31,6 @@ public class CuMemberEmptyDetailServiceImpl extends ServiceImpl<CuMemberEmptyDet
private ICuMemberEmptyService iCuMemberEmptyService;
@Autowired
private ICuMemberEmptyCodeService iCuMemberEmptyCodeService;
@Autowired
private ICuMemberEmptyProductService iCuMemberEmptyProductService;
@Transactional(rollbackFor = Exception.class)
@Override
@ -92,15 +85,6 @@ public class CuMemberEmptyDetailServiceImpl extends ServiceImpl<CuMemberEmptyDet
codeUpdateWrapper.set(CuMemberEmptyCode::getModifiedTime, nowDate);
iCuMemberEmptyCodeService.update(codeUpdateWrapper);
// 删除空单明细产品
LambdaUpdateWrapper<CuMemberEmptyProduct> productUpdateWrapper = new LambdaUpdateWrapper<>();
productUpdateWrapper.in(CuMemberEmptyProduct::getPkMemberEmptyDetail, detailIdList);
productUpdateWrapper.eq(CuMemberEmptyProduct::getDelFlag, EDelFlag.UN_DELETE.getValue());
productUpdateWrapper.set(CuMemberEmptyProduct::getDelFlag, EDelFlag.DELETE.getValue());
productUpdateWrapper.set(CuMemberEmptyProduct::getPkModified, userId);
productUpdateWrapper.set(CuMemberEmptyProduct::getModifiedTime, nowDate);
iCuMemberEmptyProductService.update(productUpdateWrapper);
// 删除空单明细
LambdaUpdateWrapper<CuMemberEmptyDetail> detailUpdateWrapper = new LambdaUpdateWrapper<>();
detailUpdateWrapper.in(CuMemberEmptyDetail::getPkId, detailIdList);

View File

@ -1,48 +1,16 @@
package com.hzs.member.empty.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductExt;
import com.hzs.member.empty.mapper.CuMemberEmptyProductMapper;
import com.hzs.member.empty.service.ICuMemberEmptyProductService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 空单批次明细产品 服务实现类
*
* @author hzs
* @since 2023-08-28
*/
@Service
public class CuMemberEmptyProductServiceImpl extends ServiceImpl<CuMemberEmptyProductMapper, CuMemberEmptyProduct> implements ICuMemberEmptyProductService {
@Override
public int deleteBatch(List<CuMemberEmptyProduct> emptyProductList, Long pkMemberEmpty, Long userId) {
return baseMapper.deleteBatch(emptyProductList, pkMemberEmpty, userId);
}
@Override
public int insertOrUpdateBatch(List<CuMemberEmptyProduct> emptyProductList, Long userId) {
return baseMapper.insertOrUpdateBatch(emptyProductList, userId);
}
@Override
public Map<Long, List<CuMemberEmptyProductExt>> queryProductList(List<Long> emptyDetailIdList) {
Map<Long, List<CuMemberEmptyProductExt>> resultMap = new HashMap<>();
List<CuMemberEmptyProductExt> resultList = baseMapper.queryProductList(emptyDetailIdList);
if (CollectionUtil.isNotEmpty(resultList)) {
for (CuMemberEmptyProductExt productExt : resultList) {
resultMap.computeIfAbsent(productExt.getPkMemberEmptyDetail(), k -> new ArrayList<>()).add(productExt);
}
}
return resultMap;
}
}

View File

@ -6,13 +6,11 @@ import com.hzs.common.core.enums.EDelFlag;
import com.hzs.common.core.enums.EOrderPrefix;
import com.hzs.common.domain.member.empty.CuMemberEmpty;
import com.hzs.common.domain.member.empty.CuMemberEmptyDetail;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyDetailExt;
import com.hzs.member.empty.mapper.CuMemberEmptyMapper;
import com.hzs.member.empty.param.MemberEmptyQueryParam;
import com.hzs.member.empty.param.MemberEmptyRegisterQueryParam;
import com.hzs.member.empty.service.ICuMemberEmptyDetailService;
import com.hzs.member.empty.service.ICuMemberEmptyProductService;
import com.hzs.member.empty.service.ICuMemberEmptyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -23,17 +21,12 @@ import java.util.List;
/**
* 空单批次 服务实现类
*
* @author hzs
* @since 2023-06-16
*/
@Service
public class CuMemberEmptyServiceImpl extends ServiceImpl<CuMemberEmptyMapper, CuMemberEmpty> implements ICuMemberEmptyService {
@Autowired
private ICuMemberEmptyDetailService iCuMemberEmptyDetailService;
@Autowired
private ICuMemberEmptyProductService iCuMemberEmptyProductService;
@Override
public List<CuMemberEmpty> queryList(MemberEmptyQueryParam param, Integer pkCountry, Integer systemType) {
@ -62,14 +55,6 @@ public class CuMemberEmptyServiceImpl extends ServiceImpl<CuMemberEmptyMapper, C
emptyDetailUpdateWrapper.set(CuMemberEmptyDetail::getPkModified, userId);
emptyDetailUpdateWrapper.set(CuMemberEmptyDetail::getModifiedTime, nowDate);
iCuMemberEmptyDetailService.update(emptyDetailUpdateWrapper);
// 删除空单产品明细
LambdaUpdateWrapper<CuMemberEmptyProduct> emptyProductUpdateWrapper = new LambdaUpdateWrapper<>();
emptyProductUpdateWrapper.in(CuMemberEmptyProduct::getPkMemberEmpty, pkIdList);
emptyProductUpdateWrapper.set(CuMemberEmptyProduct::getDelFlag, EDelFlag.DELETE.getValue());
emptyProductUpdateWrapper.set(CuMemberEmptyProduct::getPkModified, userId);
emptyProductUpdateWrapper.set(CuMemberEmptyProduct::getModifiedTime, nowDate);
iCuMemberEmptyProductService.update(emptyProductUpdateWrapper);
}
@Override

View File

@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.RabbitMqConstants;
import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.constant.msg.CommonMsgConstants;
@ -14,7 +13,6 @@ import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.exception.ServiceException;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils;
@ -26,11 +24,6 @@ import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.member.empty.*;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyDetailExt;
import com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductDTO;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.config.BdAccount;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
@ -41,10 +34,8 @@ import com.hzs.member.base.service.ICuMemberRegisterService;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.detail.service.ICuMemberLevelService;
import com.hzs.member.empty.dto.MemberEmptyDetailDTO;
import com.hzs.member.empty.dto.MemberEmptyProductDTO;
import com.hzs.member.empty.param.MemberEmptySignParam;
import com.hzs.member.empty.service.*;
import com.hzs.sale.order.ISaOrderServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi;
@ -78,8 +69,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
@Autowired
private ICuMemberEmptyCodeService iCuMemberEmptyCodeService;
@Autowired
private ICuMemberEmptyProductService iCuMemberEmptyProductService;
@Autowired
private ICuMemberEmptyLogService iCuMemberEmptyLogService;
@Autowired
private ICuMemberService iCuMemberService;
@ -101,21 +90,18 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
@DubboReference
IAccountServiceApi iAccountServiceApi;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
IApprovalServiceApi iApprovalServiceApi;
@Autowired
private RedisService redisService;
@Override
public void importTemplate(List<MemberEmptyDetailDTO> resultList) {
// 会员编号列表导入会员编号去重
List<String> checkMemberList = new ArrayList<>();
// 会员联系方式列表需要查库校验
List<String> checkPhoneList = new ArrayList<>();
// 遍历导入数据提取各种校验所需要的数据
for (MemberEmptyDetailDTO detail : resultList) {
this.checkBase(detail, checkMemberList);
this.checkBase(detail, checkMemberList, checkPhoneList);
}
}
@ -187,8 +173,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
CuMemberEmpty memberEmpty = new CuMemberEmpty();
// 空单明细数据
List<CuMemberEmptyDetail> detailList = new ArrayList<>();
// 空单明细产品数据
List<CuMemberEmptyProduct> productList = new ArrayList<>();
// 空单数据
MemberEmptyDetailDTO tmpDetail = resultList.get(0);
@ -200,34 +184,12 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 空单明细数据
for (MemberEmptyDetailDTO detailDTO : resultList) {
detailList.add(BeanUtil.copyProperties(detailDTO, CuMemberEmptyDetail.class));
// 产品列表数据
List<MemberEmptyProductDTO> tmpProductList = detailDTO.getProductList();
if (CollectionUtil.isNotEmpty(tmpProductList)) {
for (MemberEmptyProductDTO productDTO : tmpProductList) {
CuMemberEmptyProduct cuMemberEmptyProduct = new CuMemberEmptyProduct();
cuMemberEmptyProduct.setPkMemberEmpty(detailDTO.getPkMemberEmpty());
cuMemberEmptyProduct.setPkMemberEmptyDetail(detailDTO.getPkId());
cuMemberEmptyProduct.setPkProduct(productDTO.getPkProduct());
cuMemberEmptyProduct.setQuantity(productDTO.getQuantity());
cuMemberEmptyProduct.setSpecsName(productDTO.getSpecsName());
cuMemberEmptyProduct.setSpecsNameId(productDTO.getSpecsNameId());
cuMemberEmptyProduct.setPkCountry(pkCountry);
productList.add(cuMemberEmptyProduct);
}
}
}
// 修改空单批次
iCuMemberEmptyService.updateById(memberEmpty);
// 更新空单批次明细
iCuMemberEmptyDetailService.updateBatch(detailList, userId);
// 删除部分空单产品数据
iCuMemberEmptyProductService.deleteBatch(productList, userId, tmpDetail.getPkMemberEmpty());
if (CollectionUtil.isNotEmpty(productList)) {
// 插入或更新空间批次产品
iCuMemberEmptyProductService.insertOrUpdateBatch(productList, userId);
}
return true;
}
@ -249,7 +211,7 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 遍历导入数据提取各种校验所需要的数据
for (MemberEmptyDetailDTO detail : resultList) {
if (this.checkBase(detail, checkMemberList)) {
if (this.checkBase(detail, checkMemberList, checkPhoneList)) {
// 已经存在异常直接返回
return false;
}
@ -264,8 +226,8 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 查询会员编号是否存在
Map<String, Integer> checkCodeMap = iCuMemberService.checkMemberCodeExist(checkMemberList, true, pkMemberEmpty);
// // 查询联系方式是否存在
// Map<String, Integer> checkPhoneMap = iCuMemberService.checkMemberPhoneExist(checkPhoneList, true, pkMemberEmpty, systemType);
// 查询联系方式是否存在
Map<String, Integer> checkPhoneMap = iCuMemberService.checkMemberPhoneExist(checkPhoneList, true, pkMemberEmpty);
// 查询推荐编号是否存在在本次推荐数据中的直接排除掉
final Map<String, Integer> checkParentCodeMap = new HashMap<>();
@ -284,6 +246,15 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
bool[0] = false;
}
}
if (checkPhoneMap.size() > 0) {
if (null != checkPhoneMap.get(detail.getPhone()) && checkPhoneMap.get(detail.getPhone()) >= 1) {
// 导入的会员联系方式已经存在数据库中异常状态
detail.setPointStatus(EPointStatus.ABNORMAL.getValue());
// 会员联系方式存在重复
detail.setContentAbstract(detail.getContentAbstract().replace(TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT), "") + TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT) + ";");
bool[0] = false;
}
}
// 处理校验推荐编号是否存在
if (!checkMemberList.contains(detail.getParentCode()) && checkParentCodeMap.get(detail.getParentCode()) == null) {
// 推荐编号不在本次导入的会员中也不在数据库中异常状态
@ -313,8 +284,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
Map<String, Long> memberAccountSeqMap = new HashMap<>();
// 需要查询汇率数据
Set<Integer> queryRateSet = new HashSet<>();
// 需要查询仓库数据
Set<Integer> queryStoreHouseSet = new HashSet<>();
// 需要查询奖金账户数据
Set<Integer> queryAccountSet = new HashSet<>();
@ -323,8 +292,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 生成需要入库的会员账户ID列表
List<Long> memberAccountSeqList = iCuMemberAccountService.querySeqList(detailList.size());
// 订单需要生成seq的数量
int orderSeqCount = 0;
// 遍历空单明细数据提取准备的数据
for (int i = 0; i < detailList.size(); i++) {
CuMemberEmptyDetailExt emptyDetail = detailList.get(i);
@ -339,14 +306,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 需要查库的汇率数据
queryRateSet.add(emptyDetail.getPkSettleCountry());
// 如果选购产品并且存在产品信息
if (EYesNo.YES.getIntValue() == emptyDetail.getProductFlag() && CollectionUtil.isNotEmpty(emptyDetail.getProductDTOList())) {
// 累计订单数量
orderSeqCount++;
// 记录查询仓库数据
queryStoreHouseSet.add(emptyDetail.getRecProvince());
}
if (null != emptyDetail.getBackAmount() && emptyDetail.getBackAmount().compareTo(BigDecimal.ZERO) > 0) {
// 回调金额大于0记录查询账户国家
queryAccountSet.add(emptyDetail.getPkSettleCountry());
@ -378,18 +337,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
}
}
// 省对应发货仓库key: 省IDvalue: 仓库ID)
Map<Integer, Integer> storehouseMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(queryStoreHouseSet)) {
// 查询省对应仓库
List<BdStorehouse> storehouseList = iCurrencyServiceApi.queryBdStorehouseMapByProvince(queryStoreHouseSet).getData();
if (CollectionUtil.isNotEmpty(storehouseList)) {
for (BdStorehouse storehouse : storehouseList) {
storehouseMap.put(storehouse.getProvince(), storehouse.getPkId());
}
}
}
// 回填金额账户数据key: 国家IDvalue: 账户ID)
Map<Integer, Integer> accountMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(queryAccountSet)) {
@ -402,14 +349,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
}
}
// 生成订单seq数据
List<Long> orderSeqList = new ArrayList<>(orderSeqCount);
if (0 != orderSeqCount) {
orderSeqList = iSaOrderServiceApi.querySeqList(orderSeqCount).getData();
}
// 订单seq数据下标
int orderSeqInt = 0;
////////// 封装入口相关数据开始 //////////
// 当前时间
@ -422,10 +361,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
List<CuMemberRegister> registerMemberList = new ArrayList<>(detailList.size());
// 入库会员账户流水列表
List<CuMemberTrade> saveMemberTradeList = new ArrayList<>();
// 入库订单列表
List<SaOrder> saveOrderList = new ArrayList<>();
// 入库订单明细列表
List<SaOrderItems> saveOrderItemList = new ArrayList<>();
// 查询批次下推荐架构顶点
List<CuMemberEmptyDetailExt> placeTopList = iCuMemberEmptyDetailService.queryPlaceParentTopAndProduct(pkMemberEmpty);
@ -444,15 +379,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
CuMember cuMember = this.createMember(saveMemberList, saveMemberAccountList, registerMemberList, saveMemberTradeList,
memberSeqMap, memberMap, memberAccountSeqMap, treeDetail,
accountMap.get(pkSettleCountry), currencyMap.get(pkSettleCountry), userId, nowDate, systemType);
// 如果选购产品并且存在产品信息
if (EYesNo.YES.getIntValue() == treeDetail.getProductFlag() && CollectionUtil.isNotEmpty(treeDetail.getProductDTOList())) {
// 获取订单ID
Long pkOrder = orderSeqList.get(orderSeqInt++);
this.createOrder(saveOrderList, saveOrderItemList, treeDetail, cuMember,
currencyMap.get(pkSettleCountry), storehouseMap.get(treeDetail.getRecCounty()),
pkOrder, userId, nowDate, systemType);
}
}
}
}
@ -467,15 +393,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
CuMember cuMember = this.createMember(saveMemberList, saveMemberAccountList, registerMemberList, saveMemberTradeList,
memberSeqMap, memberMap, memberAccountSeqMap, topDetail,
accountMap.get(pkSettleCountry), currencyMap.get(pkSettleCountry), userId, nowDate, systemType);
// 如果选购产品并且存在产品信息
if (EYesNo.YES.getIntValue() == topDetail.getProductFlag() && CollectionUtil.isNotEmpty(topDetail.getProductDTOList())) {
// 获取订单ID
Long pkOrder = orderSeqList.get(orderSeqInt++);
this.createOrder(saveOrderList, saveOrderItemList, topDetail, cuMember,
currencyMap.get(pkSettleCountry), storehouseMap.get(topDetail.getRecCounty()),
pkOrder, userId, nowDate, systemType);
}
}
} catch (Exception e) {
log.error("空单注册处理异常", e);
@ -529,14 +446,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
memberEmptyUpdateWrapper.set(CuMemberEmpty::getModifiedTime, nowDate);
iCuMemberEmptyService.update(memberEmptyUpdateWrapper);
// 购买产品订单以及订单明细入库
if (CollectionUtil.isNotEmpty(saveOrderList)) {
R<?> orderResult = iSaOrderServiceApi.saveOrderBatch(saveOrderList, saveOrderItemList);
if (!orderResult.isSuccess()) {
throw new ServiceException("空单注册生成订单异常");
}
}
if (pushLogFlag) {
// 推送业务操作日志
rabbitTemplate.convertAndSend(RabbitMqConstants.BUSINESS_LOG_EXCHANGE, RabbitMqConstants.BUSINESS_LOG_KEY, Collections.singletonList(logDTO));
@ -554,7 +463,7 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
* @param detail 校验数据
* @param checkMemberList 会员编号列表
*/
private boolean checkBase(MemberEmptyDetailDTO detail, List<String> checkMemberList) {
private boolean checkBase(MemberEmptyDetailDTO detail, List<String> checkMemberList, List<String> checkPhoneList) {
// 校验之前先为空
detail.setPointStatus(EPointStatus.NORMAL.getValue());
detail.setContentAbstract("");
@ -585,7 +494,16 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
// 导入数据中不重复的会员编号需要查库校验是否重复
checkMemberList.add(detail.getMemberCode());
}
if (checkPhoneList.contains(detail.getPhone())) {
// 导入的数据存在重复联系方式异常状态
detail.setPointStatus(EPointStatus.ABNORMAL.getValue());
// 联系方式存在重复
detail.setContentAbstract(detail.getContentAbstract() + TransactionUtils.getContent(MemberMsgConstants.EMPTY_PHONE_NOT) + ";");
hasError = true;
} else {
// 导入数据中不重复的联系方式需要查库校验是否重复
checkPhoneList.add(detail.getPhone());
}
return hasError;
}
@ -710,108 +628,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
return cuMember;
}
/**
* 封装订单以及订单详情数据
*
* @param saveOrderList 入库订单列表
* @param saveOrderItemList 入库订单明细列表
* @param emptyDetail 空单明细数据
* @param cuMember 新会员数据
* @param pkRate 汇率ID
* @param pkStoreHouse 仓库ID
* @param pkOrder 订单ID
* @param userId 当前会员
* @param nowDate 当前时间
*/
private void createOrder(List<SaOrder> saveOrderList, List<SaOrderItems> saveOrderItemList,
CuMemberEmptyDetailExt emptyDetail, CuMember cuMember,
Integer pkRate, Integer pkStoreHouse,
Long pkOrder, Long userId, Date nowDate, Integer systemType) {
// 封装订单信息
SaOrder saOrder = SaOrder.builder()
.pkId(pkOrder)
.orderCode(CommonUtil.createSerialNumber(EOrderPrefix.ORDER_CODE))
.orderType(EOrderType.REGISTER_ORDER.getValue())
.pkRate(pkRate)
.orderAmount(BigDecimal.ZERO)
.orderAchieve(null != emptyDetail.getSettlementAchieve() ? emptyDetail.getSettlementAchieve() : BigDecimal.ZERO)
.uploadAchieve(null != emptyDetail.getTransferAchieve() ? emptyDetail.getTransferAchieve() : BigDecimal.ZERO)
.recName(emptyDetail.getRecName())
.recPhone(emptyDetail.getRecPhone())
.recProvince(emptyDetail.getRecProvince())
.recCity(emptyDetail.getRecCity())
.recCounty(emptyDetail.getRecCounty())
.recAddress(emptyDetail.getRecAddress())
.payTime(nowDate)
.payType(EOrderPayType.WALLET.getValue())
.orderStatus(EPayStatus.PAID.getValue())
.pkMember(emptyDetail.getPkId())
.pkReference(cuMember.getPkParent())
.pkPlacement(cuMember.getPkPlaceParent())
.pkVertex(cuMember.getPkVertex())
.pkStorehouse(pkStoreHouse)
.systemType(systemType)
.build();
saOrder.setPkCountry(emptyDetail.getPkSettleCountry());
saOrder.setPkCreator(userId);
saOrder.setCreationTime(nowDate);
saveOrderList.add(saOrder);
// 产品信息
List<CuMemberEmptyProductDTO> productDTOList = emptyDetail.getProductDTOList();
if (CollectionUtil.isNotEmpty(productDTOList)) {
for (CuMemberEmptyProductDTO productDTO : productDTOList) {
// 封装订单明细停放上
SaOrderItems saOrderItems = SaOrderItems.builder()
.pkOrder(pkOrder)
.pkProduct(productDTO.getPkProduct())
.pkRate(pkRate)
.quantity(productDTO.getQuantity())
.pkGrade(cuMember.getPkSettleGrade())
.pkAwards(cuMember.getPkAwards())
.orderStatus(EOrderStatus.PAY.getValue())
.specsName(productDTO.getSpecsName())
.specsNameId(productDTO.getSpecsNameId())
.waresQuantity(productDTO.getQuantity())
.pkStorehouse(pkStoreHouse)
.build();
saOrderItems.setPkCountry(emptyDetail.getPkSettleCountry());
saOrderItems.setPkCreator(userId);
saOrderItems.setCreationTime(nowDate);
saveOrderItemList.add(saOrderItems);
}
}
}
/**
* 安置位置验证以及锁定
*
* @param emptyDetail 空单明细数据
* @param redisLockList redis锁定列表
* @return
*/
private Long placeLock(CuMemberEmptyDetail emptyDetail, List<String> redisLockList) {
// 查询最末安置人
CuMemberExt cuMemberExt = iCuMemberService.queryLastPlaceByMemberCode(emptyDetail.getPlaceParentCode(), emptyDetail.getPlaceDept());
if (null == cuMemberExt) {
cuMemberExt = iCuMemberService.getMemberByCode(emptyDetail.getPlaceParentCode());
}
// 需要锁安置位置
String redisLock = CacheConstants.POSITION + cuMemberExt.getPkId() + emptyDetail.getPlaceDept();
if (redisService.lockKeyOnce(redisLock)) {
redisLockList.add(redisLock);
return cuMemberExt.getPkId();
}
try {
Thread.sleep(200);
return this.placeLock(emptyDetail, redisLockList);
} catch (Exception e) {
log.error("空单注册锁定安置异常", e);
throw new ServiceException("空单注册锁定安置异常");
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public String submit(MemberEmptySignParam param, List<CuMemberEmptyDetailExt> detailList, LoginUser loginUser) {
@ -901,11 +717,6 @@ public class MemberEmptyServiceImpl implements IMemberEmptyService {
for (CuMemberEmptyDetailExt emptyDetail : detailList) {
MemberEmptyDetailDTO detailDTO = BeanUtil.copyProperties(emptyDetail, MemberEmptyDetailDTO.class);
if (StringUtils.isNotEmpty(emptyDetail.getProductDTOList())) {
// 处理产品信息
detailDTO.setProductList(BeanUtil.copyToList(emptyDetail.getProductDTOList(), MemberEmptyProductDTO.class));
}
paramList.add(detailDTO);
}

View File

@ -1,36 +0,0 @@
package com.hzs.member.empty.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description: 空单注册列表产品查询VO
* @Author: jiang chao
* @Time: 2023/7/6 17:30
* @Classname: MemberEmptyRegisterQueryProductVO
* @PackageName: com.hzs.member.empty.vo
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class MemberEmptyRegisterQueryProductVO {
/**
* 产品名称
*/
private String productName;
/**
* 产品规格名称
*/
private String specsName;
/**
* 产品数量
*/
private Integer quantity;
}

View File

@ -6,14 +6,9 @@ import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @Description: 空单注册列表查询VO
* @Author: jiang chao
* @Time: 2023/7/6 16:02
* @Classname: MemberEmptyRegisterQueryVO
* @PackageName: com.hzs.member.empty.vo
* 空单注册列表查询VO
*/
@Data
public class MemberEmptyRegisterQueryVO {
@ -42,14 +37,6 @@ public class MemberEmptyRegisterQueryVO {
@Excel(name = "联系方式")
private String phone;
/**
* 隶属体系
*/
/**
* 隶属团队
*/
/**
* 推荐编号
*/
@ -163,73 +150,4 @@ public class MemberEmptyRegisterQueryVO {
@Excel(name = "上传业绩")
private BigDecimal transferAchieve;
/**
* 选购产品
*/
@Transaction(transactionKey = EnumsPrefixConstants.DEALER_YES_NO)
private Integer productFlag;
/**
* 选购产品显示
*/
@Excel(name = "选购产品")
private String productFlagVal;
/**
* 产品信息VO
*/
private List<MemberEmptyRegisterQueryProductVO> detailList;
/**
* 产品信息
*/
@Excel(name = "产品信息")
private String productStr;
/**
* 收货人
*/
@Excel(name = "收货人")
private String recName;
/**
* 收货电话
*/
@Excel(name = "收货电话")
private String recPhone;
/**
*
*/
private Integer recProvince;
/**
* 省显示
*/
@Excel(name = "")
private String recProvinceVal;
/**
*
*/
private Integer recCity;
/**
* 市显示
*/
@Excel(name = "")
private String recCityVal;
/**
*
*/
private Integer recCounty;
/**
* 县显示
*/
@Excel(name = "")
private String recCountyVal;
/**
* 详细地址
*/
@Excel(name = "详细地址")
private String recAddress;
}

View File

@ -350,6 +350,16 @@ public class CuHandleBusinessController extends BaseController {
btvo.setTable5(EYesNo.YES.getIntValue());
btvo.setTable6(EYesNo.YES.getIntValue());
btvo.setTable7(EYesNo.YES.getIntValue());
Set<String> seenPhones = new HashSet<>();
for (BusinessMemberVO member : businessSingleVO.getBusinessMemberList()) {
String phone = member.getNewPhone();
if (!seenPhones.add(phone)) {
BusinessErrorVO bev = new BusinessErrorVO();
bev.setErrorMsg(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_RETAIL_PHONE_REPEAT) + "["+phone+"]");
bev.setMemberCode(member.getMemberCode());
errorMemberList.add(bev);
}
}
}
}
businessSingleVO.setBtvo(btvo);

View File

@ -633,6 +633,16 @@ public class CuHandleBusinessServiceImpl extends ServiceImpl<CuHandleBusinessMap
Integer businessType = businessTypeValueVO.getBusinessType();
//变更姓名变更联系方式
if (businessType.equals(EApprovalBusiness.CHANGE_NAME.getValue()) || businessType.equals(EApprovalBusiness.CHANGE_PHONE.getValue())) {
Set<String> seenPhones = new HashSet<>();
for (BusinessMemberVO member : handleBusinessVO.getBusinessMemberList()) {
if(businessType.equals(EApprovalBusiness.CHANGE_PHONE.getValue())
&& member.getBusinessType().equals(EApprovalBusiness.CHANGE_PHONE.getValue())){
String phone = member.getNewValue();
if (!seenPhones.add(phone)) {
return false;
}
}
}
businessMemberListUpdate = getBusinessMemberByBusinessType(businessMemberList, businessType);
result = cuMemberService.batchUpdateMemberNameAndMobileByPkmember(businessMemberListUpdate, businessType, loginUser.getUserId());
//重置银行卡

View File

@ -1,5 +1,6 @@
package com.hzs.member.self.controller.api;
import cn.hutool.core.util.StrUtil;
import com.hzs.common.core.annotation.RepeatSubmitSimple;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.msg.ConfigMsgConstants;
@ -121,6 +122,10 @@ public class ApiDomicileChangeController extends BaseController {
}
domicileChangeVO.setPkCountry(pkCountry);
domicileChangeVO.setPkMember(pkMember);
String verifyDuplicationStr = iCuMemberService.checkRegisterRelation(domicileChangeVO.getChangePhone(), SecurityUtils.getSystemType());
if(StrUtil.isNotEmpty(verifyDuplicationStr)){
return AjaxResult.error(verifyDuplicationStr);
}
// 校验短信验证码
String message = iApiAliSmsService.checkCode(domicileChangeVO.getChangePhone(), domicileChangeVO.getVerificationCode(), null, pkMember);
if (null != message) {

View File

@ -103,7 +103,7 @@ public class ApiShareController extends BaseController {
return AjaxResult.error("请输入联系方式");
}
// 校验注册关系是否跨团队 -- 2024.12.24 修改为校验手机号必须唯一9035
// 校验手机号必须唯一
String relationStr = iCuMemberService.checkRegisterRelation(phone, Long.parseLong(new String(Base64Decoder.decode(parentCode))));
if (relationStr != null) {
return AjaxResult.error(relationStr);
@ -140,13 +140,11 @@ public class ApiShareController extends BaseController {
return AjaxResult.error(checkSmsStr);
}
// 校验注册关系是否跨团队 -- 2024.12.24 修改为校验手机号必须唯一9035
// 2025年6月9日 - 手机号不唯一,在此不做唯一校验 - start
// String relationStr = iCuMemberService.checkRegisterRelation(registerParam.getPhone(), parentMember);
// if (relationStr != null) {
// return AjaxResult.error(relationStr);
// }
// 2025年6月9日 - 手机号不唯一,在此不做唯一校验 - start
// 校验手机号必须唯一
String relationStr = iCuMemberService.checkRegisterRelation(registerParam.getPhone(), parentMember.getPkId());
if (relationStr != null) {
return AjaxResult.error(relationStr);
}
CuMember newCuMember = iCuMemberService.shareRegisterMember(registerParam);
if (null != newCuMember) {

View File

@ -1534,6 +1534,47 @@
group by tmp.member_code
</select>
<!-- 校验会员联系方式是否存在 -->
<select id="checkMemberPhoneExist" resultType="com.hzs.member.base.dto.MemberCountDTO">
select tmp.phone, count(tmp.phone) member_count
from (
select cm.phone
from cu_member cm
where cm.del_flag = 0
and (cm.phone in ('0'
<foreach collection="phoneList" item="item" close=")" index="index">
<choose>
<when test="index % 500 == 0">) or cm.phone in (#{item}</when>
<otherwise>, #{item}</otherwise>
</choose>
</foreach>
)
<if test="checkEmpty != null and checkEmpty">
<!-- 需要校验批量空单数据 -->
union all
select cmed.phone
from CU_MEMBER_EMPTY_DETAIL cmed
inner join CU_MEMBER_EMPTY cme
on cme.pk_id = cmed.pk_member_empty
and cme.status in (1, 2, 4)
and cme.del_flag = 0
where cmed.del_flag = 0
<if test="excludeMemberEmpty != null">
and cmed.pk_member_empty != #{excludeMemberEmpty}
</if>
and (cmed.phone in ('0'
<foreach collection="phoneList" item="item" close=")" index="index">
<choose>
<when test="index % 500 == 0">) or cmed.phone in (#{item}</when>
<otherwise>, #{item}</otherwise>
</choose>
</foreach>
)
</if>
) tmp
group by tmp.phone
</select>
<select id="findAll" resultMap="MemberResultMap">
select *
from cu_member
@ -2418,9 +2459,12 @@
<if test="orderCode != null and orderCode != ''">
and so.order_code != #{orderCode}
</if>
and bg.grade_value >= #{gradeValue}) so
and bg.grade_value >= #{gradeValue}
order by so.pay_time
) so
where rownum = 1
</select>
<select id="getMemberCountWithGradeAndParent" resultType="java.lang.Integer">
select
count(cu.PK_ID)

View File

@ -30,6 +30,9 @@
<if test="pkOrder != null">
and (cml.pk_order != #{pkOrder} or cml.pk_order is null )
</if>
<if test="notUpType != null">
and cml.up_type != #{notUpType}
</if>
and cml.pk_member = #{pkMember}
order by cml.upgrade_time desc
) t

View File

@ -46,18 +46,7 @@
<result column="settle_country_name" property="settleCountryName"/>
<result column="pk_grade_key" property="pkGradeKey"/>
<result column="pk_award_key" property="pkAwardKey"/>
<result column="rec_province_val" property="recProvinceVal"/>
<result column="rec_city_val" property="recCityVal"/>
<result column="rec_county_val" property="recCountyVal"/>
<result column="remark" property="remark"/>
<collection property="productDTOList" ofType="com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductDTO">
<result column="pk_product" property="pkProduct"/>
<result column="product_code" property="productCode"/>
<result column="product_name" property="productName"/>
<result column="specs_name" property="specsName"/>
<result column="specs_name_id" property="specsNameId"/>
<result column="quantity" property="quantity"/>
</collection>
</resultMap>
<!-- 查询指定数量SEQ -->
@ -122,7 +111,7 @@
#{item.recCounty, jdbcType=NUMERIC} rec_county,
#{item.recAddress, jdbcType=VARCHAR} rec_address,
#{item.contentAbstract, jdbcType=VARCHAR} content_abstract,
#{item.productFlag} product_flag,
1 product_flag,
#{item.orderType} order_type,
#{item.autoFlag} auto_flag
from dual

View File

@ -2,117 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.member.empty.mapper.CuMemberEmptyProductMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.empty.CuMemberEmptyProduct">
<id column="PK_ID" property="pkId"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<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_MEMBER_EMPTY" property="pkMemberEmpty"/>
<result column="PK_MEMBER_EMPTY_DETAIL" property="pkMemberEmptyDetail"/>
<result column="PK_PRODUCT" property="pkProduct"/>
<result column="QUANTITY" property="quantity"/>
<result column="SPECS_NAME" property="specsName"/>
<result column="SPECS_NAME_ID" property="specsNameId"/>
</resultMap>
<!-- 批量删除会员空单产品 -->
<update id="deleteBatch">
update cu_member_empty_product cmep
set cmep.del_flag = 0,
cmep.pk_modified = #{userId},
cmep.modified_time = sysdate
where cmep.del_flag = 0
and cmep.pk_member_empty = #{pkMemberEmpty}
and cmep.pk_id in
(select cmep.pk_id
from cu_member_empty_product cmep
where cmep.del_flag = 0
and cmep.pk_member_empty = #{pkMemberEmpty}
<if test="emptyProductList != null and emptyProductList.size > 0">
and (
<foreach collection="emptyProductList" item="item" separator=" or ">
(
cmep.pk_member_empty_detail = #{item.pkMemberEmptyDetail}
and cmep.pk_product = #{item.pkProduct}
and cmep.specs_name_id = #{item.specsNameId}
)
</foreach>
)
</if>
)
</update>
<!-- 批量插入会员空单产品 -->
<insert id="insertOrUpdateBatch">
merge into CU_MEMBER_EMPTY_PRODUCT cmep
using (
<foreach collection="emptyProductList" item="item" separator=" union ">
select
#{item.pkMemberEmpty} PK_MEMBER_EMPTY,
#{item.pkMemberEmptyDetail} PK_MEMBER_EMPTY_DETAIL,
#{item.pkProduct} PK_PRODUCT,
#{item.quantity} QUANTITY,
#{item.specsName} SPECS_NAME,
#{item.specsNameId} SPECS_NAME_ID,
#{item.pkCountry} PK_COUNTRY
from dual
</foreach>
) tmp
on (
cmep.DEL_FLAG = 0
and tmp.PK_MEMBER_EMPTY = cmep.PK_MEMBER_EMPTY
and tmp.PK_MEMBER_EMPTY_DETAIL = cmep.PK_MEMBER_EMPTY_DETAIL
and tmp.PK_PRODUCT = cmep.PK_PRODUCT
and tmp.SPECS_NAME_ID = cmep.SPECS_NAME_ID
)
WHEN MATCHED THEN
update set
cmep.QUANTITY = tmp.QUANTITY,
cmep.SPECS_NAME = tmp.SPECS_NAME,
cmep.PK_MODIFIED = #{userId},
cmep.MODIFIED_TIME = sysdate
WHEN NOT MATCHED THEN
insert (
pk_id,
PK_MEMBER_EMPTY,
PK_MEMBER_EMPTY_DETAIL,
PK_PRODUCT,
QUANTITY,
SPECS_NAME,
SPECS_NAME_ID,
PK_COUNTRY,
PK_CREATOR
)
values (
CU_MEMBER_EMPTY_PRODUCT.Nextval,
tmp.PK_MEMBER_EMPTY,
tmp.PK_MEMBER_EMPTY_DETAIL,
tmp.PK_PRODUCT,
tmp.QUANTITY,
tmp.SPECS_NAME,
tmp.SPECS_NAME_ID,
tmp.PK_COUNTRY,
#{userId}
)
</insert>
<!-- 查询空单明细产品信息列表 -->
<select id="queryProductList" resultType="com.hzs.common.domain.member.empty.ext.CuMemberEmptyProductExt">
select cmep.*, bp.product_name, bp.product_code
from cu_member_empty_product cmep
left join bd_product bp
on bp.pk_id = cmep.pk_product
and bp.del_flag = 0
where cmep.del_flag = 0
and cmep.pk_member_empty_detail in
<foreach collection="emptyDetailIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
order by cmep.pk_member_empty_detail desc
</select>
</mapper>

View File

@ -148,11 +148,10 @@ public class ApiRetailOrderController {
*/
@PostMapping("/valid-relation")
public AjaxResult validRelation(@Valid @RequestBody RetailOrderRelationParam relationParam) {
// new 手机号可以重复不需要进行是否重复校验 -- 已经跳过此处可以不需要当前判断
// String relationStr = iMemberServiceApi.checkRegisterRelation(relationParam.getPhone(), relationParam.getParentCode()).getData();
// if (relationStr != null) {
// return AjaxResult.error(relationStr);
// }
String relationStr = iMemberServiceApi.checkRegisterRelation(relationParam.getPhone(), relationParam.getParentCode()).getData();
if (relationStr != null) {
return AjaxResult.error(relationStr);
}
return AjaxResult.success();
}
@ -232,12 +231,11 @@ public class ApiRetailOrderController {
// return AjaxResult.error(checkStr);
// }
// 手机号可以重复不需要进行是否重复校验 -- 已经跳过此处可以不需要当前判断
// // 校验注册关系是否跨团队 -- 2024.12.24 修改为校验手机号必须唯一
// String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), registerParam.getParentCode()).getData();
// if (relationStr != null) {
// return AjaxResult.error(relationStr);
// }
// 校验手机号必须唯一
String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), registerParam.getParentCode()).getData();
if (relationStr != null) {
return AjaxResult.error(relationStr);
}
// 购物车中获取商品信息
registerParam.setOrderItemsParams(convertShoppingCarToSku(registerParam.getPkCreator(), registerParam.getShopList()));
@ -282,12 +280,11 @@ public class ApiRetailOrderController {
// return AjaxResult.error(checkStr);
// }
// 手机号可以重复不需要进行是否重复校验 -- 已经跳过此处可以不需要当前判断
// // 校验注册关系是否跨团队 -- 2024.12.24 修改为校验手机号必须唯一
// String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), registerParam.getParentCode()).getData();
// if (relationStr != null) {
// return AjaxResult.error(relationStr);
// }
// 校验手机号必须唯一
String relationStr = iMemberServiceApi.checkRegisterRelation(registerParam.getPhone(), registerParam.getParentCode()).getData();
if (relationStr != null) {
return AjaxResult.error(relationStr);
}
// 支付入参
registerParam.setIsPay(EYesNo.YES.getIntValue());

View File

@ -3,15 +3,10 @@ package com.hzs.retail.sale.param;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Description: 新零售关系校验入参
* @Author: jiang chao
* @Time: 2024/12/19 11:52
* @Classname: RetailOrderRelationParam
* @PackageName: com.hzs.retail.sale.param
* 新零售关系校验入参
*/
@Data
public class RetailOrderRelationParam implements Serializable {

View File

@ -16,7 +16,6 @@ import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
@ -129,13 +128,7 @@ public class SaOrderBusinessController extends BaseController {
for (OrderBusinessVO orderBusinessVO : list) {
// 省市区处理
OrderUtil.handleOrderAddress(areaMap, orderBusinessVO);
if (pkCountry.equals(CountryConstants.CHINA_COUNTRY)) {
if (null != orderBusinessVO.getInExchangeRate()) {
orderBusinessVO.setOrderAchieveRmb(orderBusinessVO.getOrderAchieve().multiply(orderBusinessVO.getInExchangeRate()));
}
}
orderBusinessVO.setOrderAchieveRmb(orderBusinessVO.getOrderAchieve());
// 处理撤单时间
orderBusinessVO.setCancelTime(DateUtils.getStartTime(orderBusinessVO.getPayTime()));
@ -224,14 +217,6 @@ public class SaOrderBusinessController extends BaseController {
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_NOT_EXIST));
}
// 如果已经转结算国之前订单不能操作
for (SaOrderExt saOrder : saOrderList) {
if (!saOrder.getPkCountry().equals(saOrder.getPkSettleCountry())) {
// 用户已转结算国不能进行操作
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.SETTLEMENT_COUNTRY_NOT_OPERATE));
}
}
// 本次业务修改费用
Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(saOrderList, EApprovalBusiness.ORDER_CHANGE_ADDRESS, pkCountry);
@ -499,30 +484,14 @@ public class SaOrderBusinessController extends BaseController {
return AjaxResult.error(orderCode + TransactionUtils.getContent(SaOrderMsgConstants.ORDER_NOT_EXIST));
}
// 如果已经转结算国之前订单不能操作
if (!saOrder.getPkCountry().equals(saOrder.getPkSettleCountry())) {
// 用户已转结算国不能进行操作
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.SETTLEMENT_COUNTRY_NOT_OPERATE));
}
// // 过滤赠品只有非赠品才能进行调换货
// List<SaOrderItemsExt> orderItemsExtList = saOrder.getOrderItemsExtList().stream().filter(saOrderItemsExt -> EYesNo.NO.getIntValue() == saOrderItemsExt.getIsGift()).collect(Collectors.toList());
// 业务修改费用
Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(Collections.singletonList(saOrder), EApprovalBusiness.ORDER_CHANGE_PRODUCT, pkCountry);
// 调换货物订单以及产品PV是否需要处理
if (saOrder.getPkCountry().equals(CountryConstants.CHINA_COUNTRY)) {
// 如果是中国订单
// 汇率目前只有中国需要由美金转人民币显示其它国家显示就是美金不需要转换
BigDecimal baseExchangeRate = saOrder.getInExchangeRate();
if (null != baseExchangeRate) {
// 基础汇率不为空则进行转换
saOrder.setOrderAchieve(saOrder.getOrderAchieve().multiply(baseExchangeRate));
for (SaOrderItemsExt saOrderItemsExt : saOrder.getOrderItemsExtList()) {
saOrderItemsExt.setAchievementRmb(saOrderItemsExt.getAchievement().multiply(baseExchangeRate));
}
saOrderItemsExt.setAchievementRmb(saOrderItemsExt.getAchievement());
}
}
@ -572,39 +541,14 @@ public class SaOrderBusinessController extends BaseController {
if (orderQueryChargeDTO.getCost().compareTo(BigDecimal.ZERO) > 0) {
// 扣款金额大于0则进行处理
// 扣款国家
Integer costCountry = pkCountry;
// 扣款账户
Integer costAccount = orderQueryChargeDTO.getPkAccount();
// 扣款金额
BigDecimal cost = orderQueryChargeDTO.getCost();
// 订单下单人信息
CuMember cuMember = iMemberServiceApi.getMember(saOrder.getPkCreator()).getData();
if (!costCountry.equals(cuMember.getPkSettleCountry())) {
// 当前国家与订单创建人结算国家不同跨国报单需要转换手续费
costCountry = cuMember.getPkSettleCountry();
// 订单创建人所属国家业务扣款账户
ServiceChargeDTO costServiceChargeDTO = iServiceChargeServiceApi.getServiceChargeByType(ServiceChargeDTO.builder()
.pkCountry(costCountry)
.type(EApprovalBusiness.ORDER_CHANGE_PRODUCT.getValue())
.quantity(1)
.build()).getData();
if (null == costServiceChargeDTO) {
return AjaxResult.success();
}
costAccount = costServiceChargeDTO.getPkAccount();
// 根据汇率计算实际需要扣款金额
CurrencyDTO costCurrencyDTO = iCurrencyServiceApi.getCurrency(costCountry).getData();
// 扣款金额 = 订单结算国扣款金额 订单结算国汇率 订单创建人结算国汇率
cost = cost.multiply(costCurrencyDTO.getInExchangeRate()).divide(saOrder.getInExchangeRate(), 2, BigDecimal.ROUND_HALF_UP);
}
// 校验扣款金额是否足够
List<MemberBalanceDTO> memberBalanceDTOList = iBusinessCommission.selectBalanceNotEnoughMember(BusinessCommissionDTO.builder()
.pkCountry(costCountry)
.pkCountry(pkCountry)
.pkAccount(costAccount)
.memberAmountDTOList(Collections.singletonList(MemberAmountDTO.builder()
// 订单创建人下单人
@ -653,7 +597,6 @@ public class SaOrderBusinessController extends BaseController {
}
Integer pkCountry = SecurityUtils.getPkCountry();
// 校验订单是否存在进行中的签呈
String checkStr = iOrderBusinessService.checkBusinessExist(Collections.singletonList(param.getOrderCode()), pkCountry);
if (null != checkStr) {
@ -698,7 +641,6 @@ public class SaOrderBusinessController extends BaseController {
}
Integer pkCountry = SecurityUtils.getPkCountry();
// 校验订单是否存在进行中的签呈
String checkStr = iOrderBusinessService.checkBusinessExist(Collections.singletonList(param.getOrderCode()), pkCountry);
if (null != checkStr) {
@ -732,19 +674,6 @@ public class SaOrderBusinessController extends BaseController {
// 未支付订单不能进行退单
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_UNPAID_NOT_RETURN));
}
// 如果已经转结算国之前订单不能操作
if (!saOrder.getPkCountry().equals(saOrder.getPkSettleCountry())) {
// 用户已转结算国不能进行操作
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.SETTLEMENT_COUNTRY_NOT_OPERATE));
}
// 2023-09-06 00:00:00 之前的订单不能进行退单
long dateLong = 1693929600000L;
if (saOrder.getCreationTime().getTime() < dateLong) {
return AjaxResult.error("历史订单撤单请联系管理员");
}
return AjaxResult.success(saOrder);
}
@ -768,7 +697,6 @@ public class SaOrderBusinessController extends BaseController {
}
Integer pkCountry = SecurityUtils.getPkCountry();
// 校验订单是否存在进行中的签呈
String checkStr = iOrderBusinessService.checkBusinessExist(Collections.singletonList(param.getOrderCode()), pkCountry);
if (null != checkStr) {
@ -803,38 +731,7 @@ public class SaOrderBusinessController extends BaseController {
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_UNPAID_NOT_RETURN));
}
// if (EOrderType.REGISTER_ORDER.getValue() != saOrder.getOrderType()
// && EOrderType.FANS_ORDER.getValue() != saOrder.getOrderType()) {
// // 注册订单嗨粉注册订单 不能进行合并退单
// return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_NOT_RETURN));
// }
// 如果已经转结算国之前订单不能操作
if (!saOrder.getPkCountry().equals(saOrder.getPkSettleCountry())) {
// 用户已转结算国不能进行操作
return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.SETTLEMENT_COUNTRY_NOT_OPERATE));
}
// 2023-09-06 00:00:00 之前的订单不能进行退单
long dateLong = 1693929600000L;
if (saOrder.getCreationTime().getTime() < dateLong) {
return AjaxResult.error("历史订单撤单请联系超级管理员");
}
List<SaOrderExt> resultList = new ArrayList<>();
resultList.add(saOrder);
// if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType()
// || EOrderType.FANS_ORDER.getValue() == saOrder.getOrderType()
// || EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrder.getOrderType()
// ) {
// // 注册类订单需要拉取所有订单
// resultList.addAll(iSaOrderService.queryAllOrderByMember(saOrder.getPkMember(), pkCountry));
// }
// iSaOrderService.queryPlaceParentOrderList(saOrder.getPkMember());
return AjaxResult.success(resultList);
return AjaxResult.success(Collections.singletonList(saOrder));
}
/**
@ -896,14 +793,8 @@ public class SaOrderBusinessController extends BaseController {
return AjaxResult.error(validateCancelOrderVO.getMsg());
}
// 本次业务修改费用
List<SaOrderExt> saOrderExtList = new ArrayList<>();
SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
saOrderExtList.add(saOrderExt);
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
// }
Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(saOrderExtList, approveBusiness, SecurityUtils.getPkCountry());
Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(Collections.singletonList(saOrderExt), EApprovalBusiness.ORDER_CANCEL, SecurityUtils.getPkCountry());
OrderQueryChargeDTO dto = queryChargeMap.get(saOrderExt.getPkId());
// 撤销订单撤销产品撤销除升级订单
if (ECancelOrderType.MERGE_CANCEL_ORDER.getValue() == orderCancelParam.getCancelType()) {
@ -921,20 +812,6 @@ public class SaOrderBusinessController extends BaseController {
.orderCode(saOrderExt.getOrderCode())
.build();
List<OrderCancelDetailVO> orderCancelDetailVOList = new ArrayList<>();
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
// String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
// OrderCancelDetailVO orderCancelDetailVO = OrderCancelDetailVO.builder()
// .pkId(saOrderItems.getPkId())
// .productName(productName)
// .orderAmount(saOrderItems.getPrice())
// .number(saOrderItems.getQuantity())
// .achievement(saOrderItems.getAchievement())
// .assAchievement(saOrderItems.getAssAchievement())
// .build();
// orderCancelDetailVOList.add(orderCancelDetailVO);
// });
// } else {
saOrderExt.getOrderItemsExtList().forEach(saOrderItems -> {
OrderCancelDetailVO orderCancelDetailVO = OrderCancelDetailVO.builder()
.pkId(saOrderItems.getPkId())
@ -946,7 +823,6 @@ public class SaOrderBusinessController extends BaseController {
.build();
orderCancelDetailVOList.add(orderCancelDetailVO);
});
// }
orderCancelVO.setOrderCancelDetailVOList(orderCancelDetailVOList);
orderCancelVO.setMemberCode(saOrderExt.getMemberCode());
orderCancelVO.setMemberName(saOrderExt.getMemberName());
@ -967,11 +843,6 @@ public class SaOrderBusinessController extends BaseController {
@Log(module = EOperationModule.CANCEL_ORDER_CONFIRM, method = EOperationMethod.INSERT)
public AjaxResult cancelOrder(@RequestBody OrderCancelParam orderCancelParam) {
orderCancelParam.setPkCountry(SecurityUtils.getPkCountry());
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
// }
// }
ValidateCancelOrderVO validateCancelOrderVO = iOrderBusinessService.validateCancelOrder(orderCancelParam);
AjaxResult validateCancelOrder = validateCancelOrderVO(orderCancelParam, validateCancelOrderVO);
if (validateCancelOrder != null) {
@ -982,7 +853,7 @@ public class SaOrderBusinessController extends BaseController {
}
/**
* 撤销订单并入库,全免
* 撤销订单并入库,全免 -- 目前撤单使用
*
* @param orderCancelParam 参数
*/
@ -990,11 +861,6 @@ public class SaOrderBusinessController extends BaseController {
@Log(module = EOperationModule.CANCEL_ORDER_CONFIRM, method = EOperationMethod.INSERT)
public AjaxResult freeCostCancelOrder(@RequestBody OrderCancelParam orderCancelParam) {
orderCancelParam.setPkCountry(SecurityUtils.getPkCountry());
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// if (orderCancelParam.getOrderCancelDetailParamList() == null || orderCancelParam.getOrderCancelDetailParamList().size() == 0) {
// return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
// }
// }
if (orderCancelParam.getCancelRoad() == null || (orderCancelParam.getCancelRoad() != 1 && orderCancelParam.getCancelRoad() != 3)) {
return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
}
@ -1012,22 +878,6 @@ public class SaOrderBusinessController extends BaseController {
if (validateCancelOrderVO.getSaOrderExt() == null) {
return AjaxResult.error(validateCancelOrderVO.getMsg());
}
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
// if (saOrderExt.getOrderItemsList() == null) {
// return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_EMPTY));
// }
// Map<Long, String> productMap = new HashMap<>(ComputeUtil.mapInitCapacity(orderCancelParam.getOrderCancelDetailParamList().size()));
// saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
// String productName = productServiceApi.getProduct(saOrderItems.getPkProduct()).getData().getProductName();
// productMap.put(saOrderItems.getPkId(), productName);
// });
// orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam -> {
// if (productMap.containsKey(orderCancelDetailParam.getPkId())) {
// orderCancelDetailParam.setProductName(productMap.get(orderCancelDetailParam.getPkId()));
// }
// });
// }
return null;
}
@ -1042,9 +892,6 @@ public class SaOrderBusinessController extends BaseController {
public TableDataInfo selfOrderList(@RequestBody SelfPickUpParam selfPickUpParam) {
startPage();
selfPickUpParam.setPkSettleCountry(SecurityUtils.getPkCountry());
// if (selfPickUpParam.getApproveStatus() == null) {
// selfPickUpParam.setApproveStatus(EApproveRechargeStatus.SUBMIT.getValue());
// }
if (selfPickUpParam.getEndDate() != null) {
selfPickUpParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, selfPickUpParam.getEndDate()));
}
@ -1170,7 +1017,6 @@ public class SaOrderBusinessController extends BaseController {
*/
@PostMapping("/validate-bind")
public AjaxResult validateOrderBindBarCode(@RequestBody OrderQueryParam orderQueryParam) {
log.info(orderQueryParam.getOrderCode());
// 验证订单编号订单类型是否存在
if (StringUtils.isEmpty(orderQueryParam.getOrderCode())) {
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_CODE_EMPTY));

View File

@ -20,9 +20,6 @@ import java.util.List;
/**
* 销售订单-明细表 Mapper 接口
*
* @author hzs
* @since 2022-08-31
*/
public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
@ -119,33 +116,15 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
* 更新订单明细表将订单明细更改为删除
*
* @param saOrder 订单
* @return: Boolean
* @Author: sui q
* @Date: 2022/10/24 20:48
*/
Integer updateOrderItems(SaOrder saOrder);
/*
* @description:
* @author: sui q
* @date: 2023/7/27 16:16
* @param: null null
*
**/
void updateOrderItemsByMemberList(@Param("memberList") List<Long> memberList, @Param("pkApprove") Long pkApprove,
@Param("currentDateTime") Date currentDateTime);
/**
* 根据主键列表更新订单明细删除部分退的订单
*
* @param pkOrderItemsId 订单明细
* @param pkApprove 审核人
* @param currentDate 更新时间
* @return: Boolean
* @Author: sui q
* @Date: 2023/3/28 11:25
*/
Integer updateOrderItemsById(@Param("pkOrderItemsId") List<Long> pkOrderItemsId, @Param("pkApprove") Long pkApprove, @Param("currentDate") Date currentDate);
/**
* 根据订单ID查询订单明细列表前台使用尽量只查能用到的
*
@ -155,11 +134,7 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
List<SaOrderItemsExt> queryListByOrderId(@Param("orderIdList") List<Long> orderIdList);
/**
* @description: 根据订单ID查询订单商品明细列表
* @author: zhang jing
* @date: 2023/5/29 15:38
* @param: [orderIdList, tOrderIdList]
* @return: java.util.List<com.hzs.common.domain.sale.ext.SaOrderItemsExt>
* 根据订单ID查询订单商品明细列表
**/
List<WaresOrderVo> waresListByOrderId(@Param("orderIdList") List<Long> orderIdList);
@ -171,7 +146,6 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
*/
List<WaresOrderVo> queryWaresListByOrderId(@Param("orderId") Long orderId);
/**
* 根据订单明细ID查询订单明细列表
*
@ -206,11 +180,7 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
List<SaOrderItemsExt> selectByList(@Param("pkOrder") Long pkOrder);
/**
* @description: 根据订单ID查询商品
* @author: zhang jing
* @date: 2023/4/21 18:02
* @param: [canApplyOrderVO]
* @return: java.util.List<com.hzs.sale.order.vo.CanApplyOrderVO>
* 根据订单ID查询商品
**/
List<OrderItemsParam> getOrderItemsParams(@Param("orderIdList") List<Long> orderIdList);
@ -222,14 +192,6 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
*/
List<SaOrderItems> queryDeliverByOrder(@Param("pkOrder") Long pkOrder);
/**
* 批量插入订单明细数据
*
* @param orderItemsList 订单明细数据
* @return
*/
int insertBach(@Param("orderItemsList") List<SaOrderItems> orderItemsList);
/**
* 校验订单商品是否下架
*
@ -260,22 +222,6 @@ public interface SaOrderItemsMapper extends BaseMapper<SaOrderItems> {
*/
List<OrderItemsParam> selectByWaresCodeList(@Param("orderCode") String orderCode);
/**
* 查询新零售购买指定商品数量
*
* @param pkMember 会员ID
* @param waresCodeList 商品编号列表
* @param payTime 支付时间可为null
* @param orderTypeList 订单类型列表
* @param systemType 系统类型可为null
* @return
*/
int getRetailWaresQuantity(@Param("pkMember") Long pkMember,
@Param("waresCodeList") List<String> waresCodeList,
@Param("payTime") Date payTime,
@Param("orderTypeList") List<Integer> orderTypeList,
@Param("systemType") Integer systemType);
/**
* 查询新零售购买指定商品数量
*

View File

@ -1,8 +1,5 @@
package com.hzs.sale.order.param;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.Data;
import java.io.Serializable;
@ -10,11 +7,7 @@ import java.util.Date;
import java.util.List;
/**
* @Description: 订单查询参数
* @Author: sui q
* @Time: 2022/10/19 16:49
* @Classname: OrderQueryParam
* @PackageName: com.hzs.sale.order.param
* 订单查询参数
*/
@Data
public class OrderQueryParam implements Serializable {

View File

@ -83,18 +83,6 @@ public class SaOrderServiceProvider implements ISaOrderServiceApi {
return R.ok(iSaOrderService.selfAddressOrderList(param, memberId, pkCountry));
}
@Override
public R<?> saveOrderBatch(List<SaOrder> orderList, List<SaOrderItems> orderItemsList) {
try {
if (iSaOrderService.insertBach(orderList, orderItemsList) > 0) {
return R.ok();
}
} catch (Exception e) {
log.error("批量插入订单和订单明细异常", e);
}
return R.fail();
}
@Override
public List<MemberFirstOrderDTO> checkMemberIsFirstOrder(List<String> memberCodeList) {
List<MemberFirstOrderVo> memberFirstOrderVos = iSaOrderService.checkMemberIsFirstOrder(memberCodeList);

View File

@ -16,11 +16,7 @@ import java.util.List;
import java.util.Map;
/**
* @Description: 订单业务办理服务
* @Author: jiang chao
* @Time: 2023/2/1 17:49
* @Classname: IOrderBusinessService
* @PackageName: com.hzs.sale.order.service
* 订单业务办理服务
*/
public interface IOrderBusinessService {
@ -161,9 +157,6 @@ public interface IOrderBusinessService {
*
* @param orderCancelParam 参数
* @param businessCode 审核验证的时候需要去掉自己
* @return: Boolean
* @Author: sui q
* @Date: 2023/3/22 11:40
*/
ValidateCancelOrderVO validateCancelOrder(OrderCancelParam orderCancelParam, String... businessCode);
@ -191,9 +184,6 @@ public interface IOrderBusinessService {
*
* @param approvalBusinessResultDTO 参数
* @param approvalBusiness 审核类型
* @return: void
* @Author: sui q
* @Date: 2023/3/25 10:43
*/
String cancelOrderApprovalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO, Integer approvalBusiness);
@ -202,9 +192,6 @@ public interface IOrderBusinessService {
*
* @param approvalBusinessResultDTO 参数
* @param approvalBusiness 审核类型
* @return: void
* @Author: sui q
* @Date: 2023/3/25 10:43
*/
String cancelOrderApprovalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO, Integer approvalBusiness);
@ -241,11 +228,7 @@ public interface IOrderBusinessService {
EAgentApprovalStatus approvalStatus, String remark);
/**
* @description: 校验自助撤单
* @author: zhang jing
* @date: 2023/11/21 15:24
* @param: [orderCancelParam, businessCode]
* @return: com.hzs.sale.order.vo.ValidateCancelOrderVO
* 校验自助撤单
**/
MyOrderVO checkSelfOrder(Long userId, MyOrderVO myOrderVO);

View File

@ -20,9 +20,6 @@ import java.util.List;
/**
* 销售订单-明细表 服务类
*
* @author hzs
* @since 2022-08-31
*/
public interface ISaOrderItemsService extends IService<SaOrderItems> {
@ -76,32 +73,14 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
* 更新订单明细表将订单明细更改为删除
*
* @param saOrder
* @return: Boolean
* @Author: sui q
* @Date: 2022/10/24 20:48
*/
Boolean updateOrderItems(SaOrder saOrder);
/*
* @description:
* @author: sui q
* @date: 2023/7/27 16:16
* @param: null null
*
**/
void updateOrderItemsByMemberList(List<Long> memberList, Long pkApprove, Date currentDateTime);
/**
* 根据主键列表更新订单明细删除部分退的订单
*
* @param pkOrderItemsId 订单明细
* @param pkApprove 审核人
* @param currentDate 更新时间
* @return: Boolean
* @Author: sui q
* @Date: 2023/3/28 11:25
*/
Boolean updateOrderItemsById(List<Long> pkOrderItemsId, Long pkApprove, Date currentDate);
/**
* 根据订单ID查询订单明细列表
*
@ -111,11 +90,7 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
List<SaOrderItemsExt> queryListByOrderId(List<Long> orderIdList);
/**
* @description: 根据订单id查询订单商品列表
* @author: zhang jing
* @date: 2023/5/29 15:37
* @param: [orderIdList, tOrderIdList]
* @return: java.util.List<com.hzs.common.domain.sale.ext.SaOrderItemsExt>
* 根据订单id查询订单商品列表
**/
List<WaresOrderVo> waresListByOrderId(List<Long> orderIdList);
@ -157,11 +132,7 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
List<SaOrderItemsExt> selectByList(Long pkOrder);
/**
* @description: 根据订单ID查询商品
* @author: zhang jing
* @date: 2023/4/21 18:02
* @param: [canApplyOrderVO]
* @return: java.util.List<com.hzs.sale.order.vo.CanApplyOrderVO>
* 根据订单ID查询商品
**/
List<OrderItemsParam> getOrderItemsParams(@Param("orderIdList") List<Long> orderIdList);
@ -173,14 +144,6 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
*/
List<SaOrderItems> queryDeliverByOrder(Long pkOrder);
/**
* 批量插入订单明细数据
*
* @param orderItemsList 订单明细数据
* @return
*/
int insertBach(List<SaOrderItems> orderItemsList);
/**
* 校验订单商品是否下架
*
@ -228,18 +191,6 @@ public interface ISaOrderItemsService extends IService<SaOrderItems> {
*/
List<OrderItemsParam> selectByWaresCodeList(String orderCode);
/**
* 查询新零售购买指定商品数量
*
* @param pkMember 会员ID
* @param waresCodeList 商品编号列表
* @param payTime 支付时间可为null
* @param orderTypeList 订单类型列表
* @param systemType 系统类型可为null
* @return
*/
int getRetailWaresQuantity(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType);
/**
* 查询新零售购买指定商品数量
*

View File

@ -537,14 +537,6 @@ public interface ISaOrderService extends IService<SaOrder> {
*/
List<Long> querySeqList(Integer param);
/**
* 批量插入订单数据
*
* @param orderList 订单列表
* @return
*/
int insertBach(List<SaOrder> orderList, List<SaOrderItems> orderItemsList);
/**
* 根据编号查询会员首单
*

View File

@ -203,7 +203,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
dto.setPkAccount(serviceChargeDTO.getPkAccount());
dto.setAccountKey(serviceChargeDTO.getAccountKey());
}
break;
}
}
@ -323,7 +322,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
throw new ServiceException(tmpR.getMsg());
}
}
// 推送业务操作日志
rabbitTemplate.convertAndSend(RabbitMqConstants.BUSINESS_LOG_EXCHANGE, RabbitMqConstants.BUSINESS_LOG_KEY, dtoList);
@ -1013,7 +1011,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
}
}
@Override
public String returnOrderApprovalSubmit(OrderReturnParam param, LoginUser loginUser) {
// 所属国家
@ -1109,7 +1106,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
// 订单变动日志
List<SaOrderChargeLog> saOrderChargeLogList = new ArrayList<>();
for (SaOrder tmpSaOrder : saOrderList) {
SaOrderChargeLog saOrderChargeLog = new SaOrderChargeLog();
saOrderChargeLog.setPkOrder(saOrder.getPkId());
saOrderChargeLog.setChargeType(EApprovalBusiness.ORDER_RETURN.getValue());
@ -1149,7 +1145,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
// 推送业务操作日志
rabbitTemplate.convertAndSend(RabbitMqConstants.BUSINESS_LOG_EXCHANGE, RabbitMqConstants.BUSINESS_LOG_KEY, dtoList);
}
return submitStr;
}
return TransactionUtils.getContent(CommonMsgConstants.OPERATION_FAILED);
@ -1248,23 +1243,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
return validateCancelOrderVO;
}
int approveBusiness = EApprovalBusiness.ORDER_CANCEL.getValue();
SaOrderExt saOrderExt;
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT.getValue();
// SaOrder orderQuery = SaOrder.builder().orderStatus(EOrderStatus.PAY.getValue()).orderCode(orderCancelParam.getOrderCode()).build();
// orderQuery.setPkCountry(orderCancelParam.getPkCountry());
//// List<Long> itemIdList = new ArrayList<>();
//// if (orderCancelParam.getOrderCancelDetailParamList() != null && orderCancelParam.getOrderCancelDetailParamList().size() > 0) {
//// orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
//// itemIdList.add(orderCancelDetailParam.getPkId()));
//// }
// saOrderExt = iSaOrderService.querySaleOrderExtByOrderCode(orderQuery, new ArrayList<>());
// CuMember cuMember = iSaOrderService.getCuMemberByKey(saOrderExt.getPkMember());
// saOrderExt.setMemberCode(cuMember.getMemberCode());
// saOrderExt.setMemberName(cuMember.getMemberName());
// } else {
saOrderExt = iSaOrderService.queryOrderByCode(orderCancelParam.getOrderCode(), orderCancelParam.getPkCountry());
// }
SaOrderExt saOrderExt = iSaOrderService.queryOrderByCode(orderCancelParam.getOrderCode(), orderCancelParam.getPkCountry());
if (saOrderExt == null || EOrderStatus.WAIT_PAY.getValue() == saOrderExt.getOrderStatus()) {
validateCancelOrderVO.setMsg(TransactionUtils.getContent(SaOrderMsgConstants.ORDER_EMPTY));
return validateCancelOrderVO;
@ -1272,7 +1251,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
if (orderCancelParam.getCancelType().equals(ECancelOrderType.SINGLE_CANCEL_ORDER.getValue())
|| orderCancelParam.getCancelType().equals(ECancelOrderType.MERGE_CANCEL_ORDER.getValue())
|| orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_ORDER.getValue())
// || orderCancelParam.getCancelType().equals(ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue())
) {
// 验证订单时间只能撤销7天以内的支付订单
// 周结只能撤销当前期间的订单不能撤销上个期间的订单
@ -1460,9 +1438,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
String businessCode = CommonUtil.createSerialNumber(EOrderPrefix.DEFAULT);
// 修改类型
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
// }
// 封装修改地址业务日志
List<BusinessLogDTO> dtoList = new ArrayList<>();
@ -1549,13 +1524,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
orderCancelParam.setMemberCode(cuMember.getMemberCode());
orderCancelParam.setMemberName(cuMember.getMemberName());
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
//// List<OrderCancelDetailParam> orderCancelDetailParamList = new ArrayList<>();
//// orderCancelParam.getOrderCancelDetailParamList().forEach(orderCancelDetailParam ->
//// orderCancelDetailParamList.add(BeanUtil.copyProperties(orderCancelDetailParam, OrderCancelDetailParam.class)));
//// orderCancelParam.setOrderCancelDetailParamList(orderCancelDetailParamList);
// }
// 本次业务修改费用
Map<Long, OrderQueryChargeDTO> queryChargeMap = null;
if (orderCancelParam.getCancelRoad() == null || orderCancelParam.getCancelRoad() != 2) {

View File

@ -64,11 +64,6 @@ public class SaOrderItemsServiceImpl extends ServiceImpl<SaOrderItemsMapper, SaO
baseMapper.updateOrderItemsByMemberList(memberList, pkApprove, currentDateTime);
}
@Override
public Boolean updateOrderItemsById(List<Long> pkOrderItemsId, Long pkApprove, Date currentDate) {
return baseMapper.updateOrderItemsById(pkOrderItemsId, pkApprove, currentDate) > 0;
}
@Override
public List<SaOrderItemsExt> queryListByOrderId(List<Long> orderIdList) {
return baseMapper.queryListByOrderId(orderIdList);
@ -94,32 +89,16 @@ public class SaOrderItemsServiceImpl extends ServiceImpl<SaOrderItemsMapper, SaO
return baseMapper.selectByInvestmentList(waresOrderParam);
}
/**
* 定时关闭订单
*/
@Override
public void closeOrder(Integer pkCountry, String data, Integer orderType) {
baseMapper.closeOrder(pkCountry, data, orderType);
}
/**
* 根据订单主键查询信息
*
* @param pkOrder
* @return
*/
@Override
public List<SaOrderItemsExt> selectByList(Long pkOrder) {
return baseMapper.selectByList(pkOrder);
}
/**
* @description: 根据订单ID查询商品
* @author: zhang jing
* @date: 2023/4/21 18:02
* @param: [canApplyOrderVO]
* @return: java.util.List<com.hzs.sale.order.vo.CanApplyOrderVO>
**/
@Override
public List<OrderItemsParam> getOrderItemsParams(List<Long> orderIdList) {
return baseMapper.getOrderItemsParams(orderIdList);
@ -130,11 +109,6 @@ public class SaOrderItemsServiceImpl extends ServiceImpl<SaOrderItemsMapper, SaO
return baseMapper.queryDeliverByOrder(pkOrder);
}
@Override
public int insertBach(List<SaOrderItems> orderItemsList) {
return baseMapper.insertBach(orderItemsList);
}
@Override
public int checkOrderItemsPutOn(String orderCode) {
return baseMapper.checkOrderItemsPutOn(orderCode);
@ -175,22 +149,11 @@ public class SaOrderItemsServiceImpl extends ServiceImpl<SaOrderItemsMapper, SaO
return baseMapper.copyDeductionItems(pkOrderOld, pkOrderNew, userId, nowDate);
}
/**
* 根据订单编号查询订单项
*
* @param orderCode
* @return
*/
@Override
public List<OrderItemsParam> selectByWaresCodeList(String orderCode) {
return baseMapper.selectByWaresCodeList(orderCode);
}
@Override
public int getRetailWaresQuantity(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType) {
return baseMapper.getRetailWaresQuantity(pkMember, waresCodeList, payTime, orderTypeList, systemType);
}
@Override
public BigDecimal getRetailWaresQuantityNew(Long pkMember, List<String> waresCodeList, Date payTime, List<Integer> orderTypeList, Integer systemType) {
return baseMapper.getRetailWaresQuantityNew(pkMember, waresCodeList, payTime, orderTypeList, systemType);

View File

@ -1265,9 +1265,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
BusinessCommissionDTO businessCommissionDTO = null;
if (orderCancelParam.getCancelRoad() == 1) {
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// approveBusiness = EApprovalBusiness.ORDER_CANCEL_PRODUCT;
// }
Map<Long, OrderQueryChargeDTO> queryChargeMap = iOrderBusinessService.queryChargeLog(Collections.singletonList(validateCancelOrderVO.getSaOrderExt()),
approveBusiness, orderCancelParam.getPkCountry());
if (queryChargeMap != null && queryChargeMap.containsKey(saOrderExt.getPkId())) {
@ -1296,47 +1293,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
}
}
// if (ECancelOrderType.OTHER_CANCEL_PART_ORDER.getValue() == orderCancelParam.getCancelType()) {
// List<OrderCancelDetailParam> orderCancelDetailParamList = orderCancelParam.getOrderCancelDetailParamList();
// List<Long> pkOrderItemList = orderCancelDetailParamList.stream().map(OrderCancelDetailParam::getPkId).collect(Collectors.toList());
// // 第二次封装订单根据明细表计算订单主表金额业绩
// saOrderExt.setOrderAmount(BigDecimal.ZERO);
// saOrderExt.setOrderAchieve(BigDecimal.ZERO);
// saOrderExt.setOrderAssAchieve(BigDecimal.ZERO);
// saOrderExt.setBackOrderAmount(BigDecimal.ZERO);
// List<SaOrderItems> saOrderItemsList = new ArrayList<>();
// saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
// if (pkOrderItemList.contains(saOrderItems.getPkId())) {
// saOrderExt.setBackOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getBackOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
// return;
// }
// // 总价;
// saOrderExt.setOrderAmount(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAmount(), saOrderItems.getPrice(), saOrderItems.getQuantity()));
// // 总业绩
// saOrderExt.setOrderAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAchieve(), saOrderItems.getAchievement(), saOrderItems.getQuantity()));
// // 总考核业绩
// saOrderExt.setOrderAssAchieve(ComputeUtil.computeAddMultiply(saOrderExt.getOrderAssAchieve(), saOrderItems.getAssAchievement(), saOrderItems.getQuantity()));
// saOrderItemsList.add(saOrderItems);
// });
// saOrderExt.setUploadAchieve(saOrderExt.getOrderAchieve());
// if (saOrderItemsList.size() == 0) {
// saOrderExt.setDelFlag(EDelFlag.DELETE.getValue());
// } else {
// saOrderExt.setOrderItemsList(saOrderItemsList);
// }
// // 修改订单
// Date currentDateTime = DateUtils.currentDateTime();
// // 删除发货单
// iSaDeliverItemsService.deleteSaDeliverItems(saOrderExt.getPkId(), pkOrderItemList);
// updateSaOrder(pkApprove, saOrderExt, currentDateTime);
// // 删除订单明细
// if (!iSaOrderItemsService.updateOrderItemsById(pkOrderItemList, pkApprove, currentDateTime)) {
// throw new ServiceException("更新订单失败");
// }
// if (!iMemberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, null, businessCommissionDTO).getData()) {
// throw new ServiceException("撤单失败");
// }
// } else {
// 删除订单
saOrderExt.setDelFlag(EDelFlag.DELETE.getValue());
Date currentDate = DateUtils.currentDateTime();
@ -1355,7 +1311,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 撤销注册订单 单点撤单
if (ECancelOrderType.SINGLE_CANCEL_ORDER.getValue() == orderCancelParam.getCancelType()) {
// 单点撤单变死点
R<Boolean> tmpR = iMemberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO);
R<Boolean> tmpR = iMemberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO, false);
if (!tmpR.isSuccess()) {
throw new ServiceException("撤单失败 " + tmpR.getMsg());
}
@ -1375,9 +1331,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
}
} else {
// 其他撤单
this.handleCancelUpgradeOrder(saOrderExt, validateCancelOrderVO.getUpdSaOrder(), pkApprove, businessCommissionDTO);
this.handleCancelUpgradeOrder(saOrderExt, pkApprove, businessCommissionDTO);
}
// }
try {
// 推送MQ的列表
@ -1760,16 +1715,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return baseMapper.querySeqList(param);
}
@Transactional(rollbackFor = Exception.class)
@Override
public int insertBach(List<SaOrder> orderList, List<SaOrderItems> orderItemsList) {
int i = baseMapper.insertBach(orderList);
if (i > 0 && CollectionUtil.isNotEmpty(orderItemsList)) {
iSaOrderItemsService.insertBach(orderItemsList);
}
return i;
}
@Override
public List<MemberFirstOrderVo> checkMemberIsFirstOrder(List<String> memberCodeList) {
return baseMapper.checkMemberIsFirstOrder(memberCodeList);
@ -1811,12 +1756,13 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
// 撤销注册订单
if (myOrderVO.getOrderType() == EOrderType.RETAIL_REGISTER.getValue()) {
// 逻辑删除会员
if (!iMemberServiceApi.singleRevokeMemberBySelfRevokeOrder(pkApprove, saOrderExt, businessCommissionDTO).getData()) {
throw new ServiceException("撤单失败");
R<Boolean> tmpR = iMemberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO, true);
if (!tmpR.isSuccess()) {
throw new ServiceException("撤单失败 " + tmpR.getMsg());
}
} else {
// 其他撤单
this.handleCancelUpgradeOrder(saOrderExt, myOrderVO.getUpdSaOrder(), pkApprove, businessCommissionDTO);
this.handleCancelUpgradeOrder(saOrderExt, pkApprove, businessCommissionDTO);
}
try {
@ -2026,58 +1972,32 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return flag;
}
/**
* 计算新零售撤单等级
*
* @param cuMember 会员信息
* @param saOrder 订单信息
* @return
*/
private GradeDTO calculateRetailCancelGrade(CuMember cuMember, SaOrder saOrder) {
// 查询会员最新升级记录
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrder.getPkId()).getData();
if (null != cuMemberLevel) {
return iGradeServiceApi.getGrade(cuMemberLevel.getNewLevel()).getData();
}
// 没有升级记录直接查会员注册信息表
CuMemberRegister cuMemberRegister = iCuMemberDetailServiceApi.getMemberRegister(cuMember.getPkId()).getData();
if (null == cuMemberRegister) {
throw new ServiceException("没有会员注册信息");
}
return iGradeServiceApi.getGrade(cuMemberRegister.getPkRegisterGrade()).getData();
}
/**
* 处理撤销订单
*
* @param saOrderExt 订单信息
* @param updSaOrder 升级订单
* @param pkApprove 操作人
* @param businessCommissionDTO 业务处理DTO
*/
private void handleCancelUpgradeOrder(SaOrderExt saOrderExt, SaOrder updSaOrder, Long pkApprove, BusinessCommissionDTO businessCommissionDTO) {
private void handleCancelUpgradeOrder(SaOrderExt saOrderExt, Long pkApprove, BusinessCommissionDTO businessCommissionDTO) {
// 其他撤单 撤销升级订单
CuMember cuMember = getCuMemberByKey(saOrderExt.getPkMember());
if (EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 计算等级
// 空单注册从cu_member_register中获取
if (updSaOrder == null) {
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(saOrderExt.getPkMember()).getData();
// 查询会员最新升级记录主要是手动升级记录
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId(), null).getData();
if (null != cuMemberLevel) {
cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
} else {
// 当前订单之前没有注册升级订单从空单注册cu_member_register中获取
CuMemberRegister cuMemberRegister = iMemberServiceApi.queryCuMemberRegister(cuMember.getPkId()).getData();
if (null == cuMemberRegister) {
throw new ServiceException("没有会员注册信息");
}
cuMember.setPkRegisterGrade(cuMemberRegister.getPkRegisterGrade());
cuMember.setPkSettleGrade(cuMemberRegister.getPkRegisterGrade());
cuMember.setConsumeMoney(BigDecimal.ZERO);
cuMember.setConsumeAchieve(cuMemberRegister.getConsumeAchieve());
// 查询会员最新升级记录
CuMemberLevel cuMemberLevel = iCuMemberDetailServiceApi.getLastUpgrade(cuMember.getPkId(), saOrderExt.getPkId()).getData();
if (null != cuMemberLevel) {
cuMember.setPkSettleGrade(cuMemberLevel.getNewLevel());
}
} else {
// 传的订单是当前撤的订单
GradeDTO gradeDTO = calculateRetailCancelGrade(cuMember, saOrderExt);
cuMember.setPkSettleGrade(gradeDTO.getPkId());
}
Date firstDate = baseMapper.getFirstPayTime(cuMember.getPkId());

View File

@ -660,16 +660,6 @@
and pk_order = #{pkId}
and del_flag = 0
</update>
<update id="updateOrderItemsById">
update SA_ORDER_ITEMS
set del_flag = 1,
pk_modified=#{pkApprove},
modified_time=#{currentDate}
where del_flag = 0 and pk_id in
<foreach collection="pkOrderItemsId" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</update>
<!-- 根据订单ID查询订单明细列表前台使用尽量只查能用到的 -->
<select id="queryListByOrderId" resultType="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
@ -1021,26 +1011,6 @@
and soi.pk_order = #{pkOrder}
</select>
<!-- 批量插入订单明细数据 -->
<insert id="insertBach">
INSERT ALL
<foreach collection="orderItemsList" item="item" separator=" ">
into SA_ORDER_ITEMS (
PK_ORDER, PK_PRODUCT, QUANTITY, PK_RATE,
PK_GRADE, PK_AWARDS, ORDER_STATUS,
SPECS_NAME, SPECS_NAME_ID, WARES_QUANTITY,
PK_CREATOR, CREATION_TIME, PK_COUNTRY
)
values (
#{item.pkOrder}, #{item.pkProduct}, #{item.quantity}, #{item.pkRate, jdbcType=NUMERIC},
#{item.pkGrade}, #{item.pkAwards}, #{item.orderStatus},
#{item.specsName}, #{item.specsNameId}, #{item.waresQuantity},
#{item.pkCreator}, #{item.creationTime}, #{item.pkCountry}
)
</foreach>
SELECT 1 FROM dual
</insert>
<!-- 校验订单商品是否下架 -->
<select id="checkOrderItemsPutOn" resultType="int">
select count(1)
@ -1130,35 +1100,6 @@
and so.ORDER_CODE = #{orderCode}
</select>
<!-- 查询新零售购买指定商品数量 -->
<select id="getRetailWaresQuantity" resultType="int">
select nvl(sum(soi.wares_quantity), 0) wares_quantity
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id
and soi.del_flag = 0
and soi.is_gift = 1
left join bd_wares bw
on bw.pk_id = soi.pk_wares
where so.del_flag = 0
and so.order_status = 1
and so.pk_member = #{pkMember}
<if test="systemType != null">
and so.system_type = #{systemType}
</if>
and so.order_type in
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and bw.wares_code in
<foreach collection="waresCodeList" item="items" open="(" close=")" separator=",">
#{items}
</foreach>
<if test="payTime != null">
and so.pay_time > #{payTime}
</if>
</select>
<!-- 查询新零售购买指定商品数量(新) -->
<select id="getRetailWaresQuantityNew" resultType="decimal">
select sum(so.box_num) wares_quantity

View File

@ -6,42 +6,21 @@ import com.hzs.common.domain.system.base.BdStorehouseAreaMiddle;
import com.hzs.system.base.vo.BdStorehouseAreaMiddleVO;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
/**
* <p>
* 仓库地区中间表 Mapper 接口
* </p>
*
* @author hzs
* @since 2023-05-05
*/
public interface BdStorehouseAreaMiddleMapper extends BaseMapper<BdStorehouseAreaMiddle> {
/**
* @description: 查询地区绑定仓库列表
* @author: zhang jing
* @date: 2023/5/5 20:09
* @param: [storehouseAreaMiddleVO]
* @return: java.util.List<com.hzs.system.base.vo.BdStorehouseAreaMiddleVO>
* 查询地区绑定仓库列表
**/
List<BdStorehouseAreaMiddleVO> getBdStorehouseAreaMiddleList(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO);
/*
* @description: 根据省查询对应的发货仓库
* @author: sui q
* @date: 2023/5/8 14:22
* @param: null null
* 根据省查询对应的发货仓库
**/
List<BdStorehouse> queryBdStorehouseByProvince(@Param("province") Integer province, @Param("type") Integer type);
/**
* 批量查询省对应仓库列表
*
* @param provinceList 省列表
* @return
*/
List<BdStorehouse> queryStorehouseListByProvince(@Param("provinceList") Collection<Integer> provinceList);
}

View File

@ -1,20 +1,13 @@
package com.hzs.system.base.provider;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.system.base.BdCurrency;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.base.ext.BdCubasdocExt;
import com.hzs.common.domain.system.sys.SysCorp;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.base.param.BdCubasdocParam;
import com.hzs.system.base.service.IBdCubasdocService;
import com.hzs.system.base.service.IBdCurrencyService;
import com.hzs.system.base.service.IBdStorehouseAreaMiddleService;
import com.hzs.system.base.service.IBdStorehouseService;
import com.hzs.system.sys.service.ISysCorpService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,12 +21,6 @@ public class CurrencyServiceProvider implements ICurrencyServiceApi {
private IBdCurrencyService currencyService;
@Autowired
private IBdStorehouseAreaMiddleService storehouseAreaMiddleService;
@Autowired
private IBdCubasdocService bdCubasdocService;
@Autowired
private ISysCorpService sysCorpService;
@Autowired
private IBdStorehouseService storehouseService;
@Override
public R<CurrencyDTO> getCurrency(Integer pkCountry) {
@ -76,16 +63,6 @@ public class CurrencyServiceProvider implements ICurrencyServiceApi {
return R.ok(storehouseAreaMiddleService.queryBdStorehouseByProvince(province, storeType));
}
@Override
public R<BdStorehouse> queryBdStorehouseById(Integer pkId) {
return R.ok(storehouseService.getById(pkId));
}
@Override
public R<List<BdStorehouse>> queryBdStorehouseMapByProvince(Collection<Integer> provinceList) {
return R.ok(storehouseAreaMiddleService.queryStorehouseListByProvince(provinceList));
}
@Override
public R<CurrencyDTO> getByHistoryPkId(Integer currencyId) {
BdCurrency bdCurrency = currencyService.getByHistoryPkid(currencyId);
@ -99,39 +76,4 @@ public class CurrencyServiceProvider implements ICurrencyServiceApi {
return R.ok(currencyDtoList);
}
@Override
public R<BdCubasdocExt> queryBdCubasdocById(Integer pkId, Integer pkCountry) {
BdCubasdocParam cubasdocParam = BdCubasdocParam.builder()
.pkCountry(pkCountry)
.pkId(pkId)
.build();
List<BdCubasdocExt> bdCubasdocList = bdCubasdocService.querySupplierByCondition(cubasdocParam);
if (CollectionUtil.isNotEmpty(bdCubasdocList)) {
return R.ok(bdCubasdocList.get(0));
}
return R.ok(null);
}
@Override
public R<BdCubasdocExt> queryBdCustomerById(Integer pkId, Integer pkCountry) {
BdCubasdocParam customerParam = BdCubasdocParam.builder()
.pkCountry(pkCountry)
.pkId(pkId)
.build();
List<BdCubasdocExt> bdCubasdocList = bdCubasdocService.queryCustomerByCondition(customerParam);
if (CollectionUtil.isNotEmpty(bdCubasdocList)) {
return R.ok(bdCubasdocList.get(0));
}
return R.ok(null);
}
@Override
public R<SysCorp> querySysCorp(Integer pkId, Integer pkCountry) {
return R.ok(sysCorpService.getSysCorp(pkId, pkCountry));
}
@Override
public R<List<BdStorehouse>> queryStorehouseByIds(Set<Integer> storehouseIdSet, Integer pkCountry, Integer pkCorp) {
return R.ok(storehouseService.queryStorehouseByIds(storehouseIdSet, pkCountry, pkCorp));
}
}

View File

@ -1,65 +1,35 @@
package com.hzs.system.base.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.domain.system.base.BdStorehouseAreaMiddle;
import com.hzs.system.base.vo.BdStorehouseAreaMiddleVO;
import java.util.Collection;
import java.util.List;
/**
* <p>
* 仓库地区中间表 服务类
* </p>
*
* @author hzs
* @since 2023-05-05
*/
public interface IBdStorehouseAreaMiddleService extends IService<BdStorehouseAreaMiddle> {
/**
* @description: 查询地区绑定仓库列表
* @author: zhang jing
* @date: 2023/5/5 20:09
* @param: [storehouseAreaMiddleVO]
* @return: java.util.List<com.hzs.system.base.vo.BdStorehouseAreaMiddleVO>
* 查询地区绑定仓库列表
**/
List<BdStorehouseAreaMiddleVO> getBdStorehouseAreaMiddleList(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO);
/**
* @description: 新增地区仓库
* @author: zhang jing
* @date: 2023/5/5 20:28
* @param: [storehouseAreaMiddleVO]
* @return: boolean
* 新增地区仓库
**/
boolean intStoArMiddle(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO);
/**
* @description: 修改地区仓库
* @author: zhang jing
* @date: 2023/5/5 20:28
* @param: [storehouseAreaMiddleVO]
* @return: boolean
* 修改地区仓库
**/
boolean upStoArMiddle(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO);
/*
* @description: 根据省查询对应的发货仓库
* @author: sui q
* @date: 2023/5/8 14:22
* @param: null null
* 根据省查询对应的发货仓库
**/
BdStorehouse queryBdStorehouseByProvince(Integer province, Integer type);
/**
* 批量查询省对应仓库列表
*
* @param provinceList 省列表
* @return
*/
List<BdStorehouse> queryStorehouseListByProvince(Collection<Integer> provinceList);
}

View File

@ -10,39 +10,19 @@ import com.hzs.system.base.service.IBdStorehouseAreaMiddleService;
import com.hzs.system.base.vo.BdStorehouseAreaMiddleVO;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
/**
* <p>
* 仓库地区中间表 服务实现类
* </p>
*
* @author hzs
* @since 2023-05-05
*/
@Service
public class BdStorehouseAreaMiddleServiceImpl extends ServiceImpl<BdStorehouseAreaMiddleMapper, BdStorehouseAreaMiddle> implements IBdStorehouseAreaMiddleService {
/**
* @description: 查询地区绑定仓库列表
* @author: zhang jing
* @date: 2023/5/5 20:09
* @param: [storehouseAreaMiddleVO]
* @return: java.util.List<com.hzs.system.base.vo.BdStorehouseAreaMiddleVO>
**/
@Override
public List<BdStorehouseAreaMiddleVO> getBdStorehouseAreaMiddleList(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO) {
return baseMapper.getBdStorehouseAreaMiddleList(storehouseAreaMiddleVO);
}
/**
* @description: 新增地区仓库
* @author: zhang jing
* @date: 2023/5/5 20:37
* @param: [storehouseAreaMiddleVO]
* @return: boolean
**/
@Override
public boolean intStoArMiddle(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO) {
BdStorehouseAreaMiddle sto = BeanUtil.copyProperties(storehouseAreaMiddleVO, BdStorehouseAreaMiddle.class);
@ -53,13 +33,6 @@ public class BdStorehouseAreaMiddleServiceImpl extends ServiceImpl<BdStorehouseA
return true;
}
/**
* @description: 修改地区仓库
* @author: zhang jing
* @date: 2023/5/5 20:37
* @param: [storehouseAreaMiddleVO]
* @return: boolean
**/
@Override
public boolean upStoArMiddle(BdStorehouseAreaMiddleVO storehouseAreaMiddleVO) {
BdStorehouseAreaMiddle sto = BeanUtil.copyProperties(storehouseAreaMiddleVO, BdStorehouseAreaMiddle.class);
@ -80,9 +53,4 @@ public class BdStorehouseAreaMiddleServiceImpl extends ServiceImpl<BdStorehouseA
return null;
}
@Override
public List<BdStorehouse> queryStorehouseListByProvince(Collection<Integer> provinceList) {
return baseMapper.queryStorehouseListByProvince(provinceList);
}
}

View File

@ -2,19 +2,6 @@
<!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.BdStorehouseAreaMiddleMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.base.BdStorehouseAreaMiddle">
<id column="PK_ID" property="pkId"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="PK_STOREHOUSE" property="pkStorehouse"/>
<result column="PROVINCE" property="province"/>
</resultMap>
<resultMap id="BdStorehouseAreaMiddleVO" type="com.hzs.system.base.vo.BdStorehouseAreaMiddleVO">
<id column="PK_ID" property="pkId"/>
<result column="CREATION_TIME" property="creationTime"/>
@ -26,7 +13,6 @@
<result column="provinceVal" property="provinceVal"/>
</resultMap>
<!--查询地区绑定仓库列表-->
<select id="getBdStorehouseAreaMiddleList" parameterType="com.hzs.system.base.vo.BdStorehouseAreaMiddleVO"
resultMap="BdStorehouseAreaMiddleVO">
@ -51,6 +37,7 @@
AND bse.NAME like '%' || #{name} || '%'
</if>
</select>
<select id="queryBdStorehouseByProvince" resultType="com.hzs.common.domain.system.base.BdStorehouse">
select bs.pk_id, bs.name, bs.code,bs.pk_corp
from bd_storehouse bs
@ -65,19 +52,4 @@
</if>
</select>
<!-- 批量查询省对应仓库列表 -->
<select id="queryStorehouseListByProvince" resultType="com.hzs.common.domain.system.base.BdStorehouse">
select bs.pk_id, bs.name, bs.code, bm.province
from bd_storehouse bs
inner join bd_storehouse_area_middle bm
on bs.pk_id = bm.pk_storehouse
where bs.del_flag = 0
and bm.del_flag = 0
and bs.enable_state = 0
and bm.province in
<foreach collection="provinceList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
</mapper>

View File

@ -15,16 +15,6 @@ public class CommonMsgConstants {
*/
public static final String OPERATION_FAILED = "操作失败";
/**
* 一般用于三方对接处理失败用户刷新后可以重新进行操作提示 -- 操作失败请刷新后重试
*/
public static final String OPERATION_FAILED_FLUSH = "操作失败,请刷新后重试";
/**
* 用户已转结算国不能进行处理相关操作 -- 用户已转结算国不能进行操作
*/
public static final String SETTLEMENT_COUNTRY_NOT_OPERATE = "用户已转结算国,不能进行操作";
/**
* 签呈处理失败 -- 签呈处理失败
*/

View File

@ -1211,5 +1211,8 @@ public class ConfigMsgConstants {
*/
public static final String MEMBER_RETAIL_REGION_REPEAT = "会员已添加收益区域";
/**
* 会员手机号重复 -- 会员手机号重复
*/
public static final String MEMBER_RETAIL_PHONE_REPEAT = "会员手机号重复";
}

View File

@ -223,6 +223,10 @@ public class MemberMsgConstants {
* 空单注册导入的会员编号中存在重复 -- 会员编号存在重复
*/
public static final String EMPTY_MEMBER_REPEAT = "会员编号存在重复";
/**
* 空单注册导入的会员联系方式中存在重复 -- 联系方式存在重复
*/
public static final String EMPTY_PHONE_NOT = "联系方式存在重复";
/**
* 空单注册导入的会员编号中存在重复 -- 推荐编号不存在
*/

View File

@ -13,9 +13,6 @@ import lombok.experimental.Accessors;
/**
* 空单批次
*
* @author hzs
* @since 2023-06-16
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -11,9 +11,6 @@ import lombok.experimental.Accessors;
/**
* 空单批次明细产品
*
* @author hzs
* @since 2023-08-28
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -4,14 +4,8 @@ import com.hzs.common.domain.member.empty.CuMemberEmptyDetail;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @Description: 空单批次明细扩展类
* @Author: jiang chao
* @Time: 2023/7/6 15:33
* @Classname: CuMemberEmptyDetailExt
* @PackageName: com.hzs.common.domain.member.empty.ext
* 空单批次明细扩展类
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ -55,27 +49,9 @@ public class CuMemberEmptyDetailExt extends CuMemberEmptyDetail {
*/
private String awardsVal;
/**
* 省名称
*/
private String recProvinceVal;
/**
* 市名称
*/
private String recCityVal;
/**
* 县名称
*/
private String recCountyVal;
/**
* 生成备注
*/
private String remark;
/**
* 空单明细产品列表
*/
private List<CuMemberEmptyProductDTO> productDTOList;
}

View File

@ -1,45 +0,0 @@
package com.hzs.common.domain.member.empty.ext;
import lombok.Data;
/**
* @Description: 空单批次明细产品展示
* @Author: jiang chao
* @Time: 2023/8/30 10:44
* @Classname: CuMemberEmptyProductOther
* @PackageName: com.hzs.common.domain.member.empty.ext
*/
@Data
public class CuMemberEmptyProductDTO {
/**
* 产品ID
*/
private Integer pkProduct;
/**
* 产品编号
*/
private String productCode;
/**
* 产品名称
*/
private String productName;
/**
* 产品规格名称
*/
private String specsName;
/**
* 产品规格ID
*/
private String specsNameId;
/**
* 产品数量
*/
private Integer quantity;
}

View File

@ -1,30 +0,0 @@
package com.hzs.common.domain.member.empty.ext;
import com.hzs.common.domain.member.empty.CuMemberEmptyProduct;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @Description: 空单明细产品扩展
* @Author: jiang chao
* @Time: 2023/8/30 11:51
* @Classname: CuMemberEmptyProductExtt
* @PackageName: com.hzs.common.domain.member.empty.ext
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CuMemberEmptyProductExt extends CuMemberEmptyProduct {
private static final long serialVersionUID = 2283368663097538169L;
/**
* 产品名称
*/
private String productName;
/**
* 产品编码
*/
private String productCode;
}

View File

@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 仓库地区中间表
* </p>
*
* @author hzs
* @since 2023-05-05
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -14,11 +14,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
/**
* @Description: 在线支付配置
* @Author: jiang chao
* @Time: 2023/3/23 16:15
* @Classname: OnlinePayConfigController
* @PackageName: com.hzs.third.pay.controller.manage
* 在线支付配置
*/
@RestController
@RequestMapping("/manage/online-config")
@ -40,6 +36,16 @@ public class OnlinePayConfigController {
OnlinePayConfigVO payConfigVO = new OnlinePayConfigVO();
// 各支付方式 true=显示false=隐藏
// 京东收银台H5
String pay5 = String.format(PayConfigConstants.PAY_CONFIG_5, pkCountry);
if (redisTemplate.hasKey(pay5)) {
payConfigVO.setPay5((Boolean) redisTemplate.opsForValue().get(pay5));
}
// 京东收银台PC
String pay6 = String.format(PayConfigConstants.PAY_CONFIG_6, pkCountry);
if (redisTemplate.hasKey(pay6)) {
payConfigVO.setPay6((Boolean) redisTemplate.opsForValue().get(pay6));
}
// 新汇付PC微信扫码支付
String pay81 = String.format(PayConfigConstants.PAY_CONFIG_81, pkCountry);