## 秒杀专区下单逻辑处理;
This commit is contained in:
parent
80a5eadb9a
commit
8d3a33206c
|
@ -20,15 +20,12 @@ import com.hzs.sale.order.param.OrderReturn;
|
|||
import com.hzs.sale.order.service.impl.SaOrderHandle;
|
||||
import com.hzs.sale.order.vo.CheckBeforeConfirmVO;
|
||||
import com.hzs.sale.shopping.param.CarWaresInfoParam;
|
||||
import com.hzs.sale.shopping.vo.CarWaresInfoVo;
|
||||
import com.hzs.sale.shopping.vo.ShoppingCartRedis;
|
||||
import com.hzs.sale.shopping.vo.ShoppingCartVO;
|
||||
import com.hzs.sale.shopping.vo.WaresItemVo;
|
||||
import com.hzs.sale.wares.service.IBdWaresSpecsSkuService;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import com.hzs.system.config.dto.GradeDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
@ -48,9 +45,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
|
|||
@Autowired
|
||||
private IBdWaresSpecsSkuService iBdWaresSpecsSkuService;
|
||||
|
||||
@DubboReference
|
||||
IGradeServiceApi iGradeServiceApi;
|
||||
|
||||
/**
|
||||
* 提供确认订单的方法
|
||||
*
|
||||
|
@ -78,6 +72,7 @@ public class ApiOthSaOrderController extends ParentOrderController {
|
|||
convertShoppingCarToSku(orderParam);
|
||||
if (EOrderType.UPGRADE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.REPURCHASE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.MALL_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == orderParam.getSpecialArea()) {
|
||||
if (StringUtils.isEmpty(orderParam.getUpgradeMemberCode())) {
|
||||
|
@ -252,21 +247,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
|
|||
}
|
||||
GradeDTO gradeDTO = saOrderHandle.getMemberGradeAndAwardByCountry(BigDecimal.ZERO, achieveAmount, pkCountry, EUpgradeWay.COVER.getValue() + "");
|
||||
if (null != gradeDTO) {
|
||||
// if (EOrderType.REGISTER_ORDER.getValue() == param.getSpecialArea()
|
||||
// || EOrderType.UPGRADE_ORDER.getValue() == param.getSpecialArea()) {
|
||||
// // 2025.05.13 新添加需求,开网初期报单660给1980等级,报单1980给9900等级
|
||||
// if (EGrade.YOU_KE.getValue() == gradeDTO.getGradeValue()) {
|
||||
// GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.MAKER.getValue(), pkCountry).getData();
|
||||
// if (null != newGradeDTO) {
|
||||
// gradeDTO = newGradeDTO;
|
||||
// }
|
||||
// } else if (EGrade.MAKER.getValue() == gradeDTO.getGradeValue()) {
|
||||
// GradeDTO newGradeDTO = iGradeServiceApi.getGradeByGradeValue(EGrade.VIP.getValue(), pkCountry).getData();
|
||||
// if (null != newGradeDTO) {
|
||||
// gradeDTO = newGradeDTO;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
if (addPurchase > gradeDTO.getBoxNumber()) {
|
||||
if (gradeDTO.getBoxNumber() == 0) {
|
||||
vo.setFlag(EYesNo.NO.getIntValue());
|
||||
|
|
|
@ -33,6 +33,8 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
|
|||
import com.hzs.common.domain.sale.ext.*;
|
||||
import com.hzs.common.domain.sale.order.*;
|
||||
import com.hzs.common.domain.sale.wares.BdWares;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresExtend;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import com.hzs.common.domain.system.base.BdCountry;
|
||||
import com.hzs.common.domain.system.base.ext.BdProductStorehouseExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
|
@ -148,6 +150,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
private IOrderBusinessService iOrderBusinessService;
|
||||
@Autowired
|
||||
private ISaOrderChargeLogService iSaOrderChargeLogService;
|
||||
@Autowired
|
||||
private IBdWaresMemberLimitService iBdWaresMemberLimitService;
|
||||
|
||||
@Autowired
|
||||
private UserTokenService userTokenService;
|
||||
|
@ -593,22 +597,22 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
// 待支付直接保存订单、会员
|
||||
// 保存订单
|
||||
save(saOrderExt);
|
||||
|
||||
// 将订单表主键封装为明细表主键
|
||||
List<WaresNumberParam> waresNumberParamList = new ArrayList<>();
|
||||
saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
|
||||
saOrderItems.setPkOrder(saOrderExt.getPkId());
|
||||
if (saOrderItems.getPkWares() != null && saOrderItems.getPkWares() != 0) {
|
||||
// 换货或者二次发货等,商品为0,则不需要处理
|
||||
waresNumberParamList.add(WaresNumberParam.builder().pkWares(saOrderItems.getPkWares()).number(saOrderItems.getWaresQuantity()).build());
|
||||
}
|
||||
});
|
||||
// 更新销量
|
||||
// 过滤相同商品主键数据
|
||||
List<WaresNumberParam> waresNumberList = waresNumberParamList.stream().filter(DeduplicationUtil.distinctByKey(WaresNumberParam::getPkWares)).collect(Collectors.toList());
|
||||
waresSalesAccrual(waresNumberList);
|
||||
// 保存订单明细
|
||||
iSaOrderItemsService.saveBatch(saOrderExt.getOrderItemsList());
|
||||
|
||||
// // 更新销量
|
||||
// // 将订单表主键封装为明细表主键
|
||||
// List<WaresNumberParam> waresNumberParamList = new ArrayList<>();
|
||||
// saOrderExt.getOrderItemsList().forEach(saOrderItems -> {
|
||||
// saOrderItems.setPkOrder(saOrderExt.getPkId());
|
||||
// if (saOrderItems.getPkWares() != null && saOrderItems.getPkWares() != 0) {
|
||||
// // 换货或者二次发货等,商品为0,则不需要处理
|
||||
// waresNumberParamList.add(WaresNumberParam.builder().pkWares(saOrderItems.getPkWares()).number(saOrderItems.getWaresQuantity()).build());
|
||||
// }
|
||||
// });
|
||||
// // 过滤相同商品主键数据
|
||||
// List<WaresNumberParam> waresNumberList = waresNumberParamList.stream().filter(DeduplicationUtil.distinctByKey(WaresNumberParam::getPkWares)).collect(Collectors.toList());
|
||||
// waresSalesAccrual(waresNumberList);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -883,6 +887,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
CuMember cuMember;
|
||||
if (EOrderType.UPGRADE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.REPURCHASE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.MALL_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == orderParam.getSpecialArea()
|
||||
|| EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == orderParam.getSpecialArea()) {
|
||||
cuMember = getCuMemberByCode(orderParam.getUpgradeMemberCode());
|
||||
|
@ -900,6 +905,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
if (setLastCuMemberGrade(cuMember, saOrderExt)) {
|
||||
return false;
|
||||
}
|
||||
} else if (EOrderType.MALL_ORDER.getValue() == orderParam.getSpecialArea()) {
|
||||
// 2025.08.01 秒杀专区,处理限购
|
||||
this.checkMallOrder(saOrderExt);
|
||||
}
|
||||
|
||||
if (isToBePay) {
|
||||
|
@ -923,6 +931,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
} else {
|
||||
// 更新订单信息
|
||||
updateSaOrder(saOrderExt);
|
||||
// 2025.08.01 添加秒杀限购处理
|
||||
this.handleMallOrder(saOrderExt);
|
||||
}
|
||||
|
||||
// 处理会员信息,更新会员等级,扣款
|
||||
|
@ -2268,4 +2278,110 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
|||
return baseMapper.singleItemStat(singleItemStatParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理秒杀限购
|
||||
*
|
||||
* @param saOrderExt
|
||||
*/
|
||||
private void handleMallOrder(SaOrderExt saOrderExt) {
|
||||
if (EOrderType.MALL_ORDER.getValue() == saOrderExt.getOrderType()) {
|
||||
// 秒杀订单,需要更新限购信息
|
||||
// key:商品ID,value:商品购买数量
|
||||
Map<Integer, Integer> limitMap = new HashMap<>();
|
||||
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
|
||||
if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
|
||||
// 非赠品计算商品数量
|
||||
limitMap.put(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity());
|
||||
}
|
||||
}
|
||||
// 会员限购列表
|
||||
List<BdWaresMemberLimit> limitList = new ArrayList<>();
|
||||
for (Integer key : limitMap.keySet()) {
|
||||
for (ELimitType limitType : ELimitType.getLiveLimitType()) {
|
||||
limitList.add(BdWaresMemberLimit.builder()
|
||||
.pkMember(saOrderExt.getPkMember())
|
||||
.pkWares(key)
|
||||
.limitType(limitType.getValue())
|
||||
.quantity(limitMap.get(key))
|
||||
.limitDate(ELimitType.TOTAL.getValue() == limitType.getValue() ? ELimitType.TOTAL.getFormat() : DateUtils.parseDateToFormat(limitType.getFormat(), saOrderExt.getPayTime()))
|
||||
.build());
|
||||
}
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(limitList)) {
|
||||
// 更新会员限购数据
|
||||
iBdWaresMemberLimitService.updateWaresMemberLimitBatch(limitList);
|
||||
// 更新商品限购库存
|
||||
iBdWaresExtendService.batchUpdateInventoryUse(limitList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验秒杀限购
|
||||
*
|
||||
* @param saOrderExt
|
||||
*/
|
||||
private void checkMallOrder(SaOrderExt saOrderExt) {
|
||||
// key:商品ID,value:商品购买数量
|
||||
Map<Integer, Integer> limitMap = new HashMap<>();
|
||||
// key:商品ID,value:商品限购属性
|
||||
Map<Integer, BdWaresExtend> waresLimitMap = new HashMap<>();
|
||||
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
|
||||
if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) {
|
||||
// 非赠品
|
||||
limitMap.put(saOrderItems.getPkWares(), saOrderItems.getWaresQuantity());
|
||||
}
|
||||
}
|
||||
if (limitMap.size() > 0) {
|
||||
// 商品限购数据
|
||||
List<BdWaresExtend> waresExtendList = iBdWaresExtendService.listByPkWaresList(limitMap.keySet());
|
||||
for (BdWaresExtend bdWaresExtend : waresExtendList) {
|
||||
// 购买数量
|
||||
Integer waresQuantity = limitMap.get(bdWaresExtend.getPkWares());
|
||||
if (waresQuantity + bdWaresExtend.getInventoryUse() > bdWaresExtend.getInventory()) {
|
||||
// 购买数量 + 已用库存 > 库存数量,不能购买
|
||||
throw new ServiceException("购买商品库存已不足,无法下单");
|
||||
}
|
||||
if (waresQuantity > bdWaresExtend.getMemberLimit()
|
||||
|| waresQuantity > bdWaresExtend.getMemberMonthLimit()) {
|
||||
// 购买数量 > 总限购 或 月限购,不能购买
|
||||
throw new ServiceException("购买商品已经超过限购数量,无法下单");
|
||||
}
|
||||
waresLimitMap.put(bdWaresExtend.getPkWares(), bdWaresExtend);
|
||||
}
|
||||
// 会员购买数据
|
||||
List<BdWaresMemberLimit> memberLimitList = iBdWaresMemberLimitService.listMemberWaresLimit(saOrderExt.getPkMember(), limitMap.keySet());
|
||||
if (CollectionUtil.isNotEmpty(memberLimitList)) {
|
||||
// key: 商品+限购类型,value:数量
|
||||
Map<String, Integer> checkLimitMap = new HashMap<>();
|
||||
for (BdWaresMemberLimit bdWaresMemberLimit : memberLimitList) {
|
||||
checkLimitMap.put(bdWaresMemberLimit.getPkWares() + "-" + bdWaresMemberLimit.getLimitDate(), bdWaresMemberLimit.getQuantity());
|
||||
}
|
||||
for (Integer tmpWares : waresLimitMap.keySet()) {
|
||||
// 遍历商品进行判断是否超出限购
|
||||
// 总限购
|
||||
Integer totalLimit = checkLimitMap.get(tmpWares + "-" + ELimitType.TOTAL.getFormat());
|
||||
if (null != totalLimit) {
|
||||
// 总限购 + 本次购买数量
|
||||
totalLimit = totalLimit + limitMap.get(tmpWares);
|
||||
if (totalLimit > waresLimitMap.get(tmpWares).getMemberLimit()) {
|
||||
// 购买数量 > 总限购,不能购买
|
||||
throw new ServiceException("购买商品已经超过限购数量,无法下单");
|
||||
}
|
||||
}
|
||||
// 月限购
|
||||
Integer monthLimit = checkLimitMap.get(tmpWares + "-" + DateUtils.parseDateToFormat(ELimitType.MONTH.getFormat(), saOrderExt.getPayTime()));
|
||||
if (null != monthLimit) {
|
||||
// 月限购 + 本次购买数量
|
||||
monthLimit = monthLimit + limitMap.get(tmpWares);
|
||||
if (monthLimit > waresLimitMap.get(tmpWares).getMemberLimit()) {
|
||||
// 购买数量 > 月限购,不能购买
|
||||
throw new ServiceException("购买商品已经超过限购数量,无法下单");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.hzs.sale.wares.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresExtend;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import com.hzs.sale.order.vo.WaresPreSaleVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
@ -40,4 +41,12 @@ public interface BdWaresExtendMapper extends BaseMapper<BdWaresExtend> {
|
|||
*/
|
||||
List<WaresPreSaleVo> selectByWaresCodeList(@Param("waresCodeList") Collection<String> waresCodeList, @Param("specialArea") Integer specialArea);
|
||||
|
||||
/**
|
||||
* 批量更新已用库存
|
||||
*
|
||||
* @param limitList
|
||||
* @return
|
||||
*/
|
||||
int batchUpdateInventoryUse(@Param("limitList") List<BdWaresMemberLimit> limitList);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package com.hzs.sale.wares.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员商品限购 Mapper 接口
|
||||
*/
|
||||
public interface BdWaresMemberLimitMapper extends BaseMapper<BdWaresMemberLimit> {
|
||||
|
||||
/**
|
||||
* 批量更新会员限购数据
|
||||
*
|
||||
* @param limitList
|
||||
* @return
|
||||
*/
|
||||
int updateWaresMemberLimitBatch(@Param("limitList") List<BdWaresMemberLimit> limitList);
|
||||
|
||||
}
|
|
@ -2,6 +2,7 @@ package com.hzs.sale.wares.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresExtend;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import com.hzs.sale.order.param.WaresNumberParam;
|
||||
import com.hzs.sale.order.vo.WaresPreSaleVo;
|
||||
|
||||
|
@ -39,4 +40,20 @@ public interface IBdWaresExtendService extends IService<BdWaresExtend> {
|
|||
*/
|
||||
List<WaresPreSaleVo> selectByWaresCodeList(Collection<String> waresCodeList, Integer specialArea);
|
||||
|
||||
/**
|
||||
* 根据商品ID列表查询扩展属性
|
||||
*
|
||||
* @param pkWaresList
|
||||
* @return
|
||||
*/
|
||||
List<BdWaresExtend> listByPkWaresList(Collection<Integer> pkWaresList);
|
||||
|
||||
/**
|
||||
* 批量更新已用库存
|
||||
*
|
||||
* @param limitList
|
||||
* @return
|
||||
*/
|
||||
int batchUpdateInventoryUse(List<BdWaresMemberLimit> limitList);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package com.hzs.sale.wares.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员商品限购 服务类
|
||||
*/
|
||||
public interface IBdWaresMemberLimitService extends IService<BdWaresMemberLimit> {
|
||||
|
||||
/**
|
||||
* 批量更新会员限购数据
|
||||
*
|
||||
* @param waresMemberLimitList
|
||||
* @return
|
||||
*/
|
||||
int updateWaresMemberLimitBatch(List<BdWaresMemberLimit> waresMemberLimitList);
|
||||
|
||||
/**
|
||||
* 查询会员限购数量
|
||||
*
|
||||
* @param pkMember
|
||||
* @param pkWaresList
|
||||
* @return
|
||||
*/
|
||||
List<BdWaresMemberLimit> listMemberWaresLimit(Long pkMember, Collection<Integer> pkWaresList);
|
||||
|
||||
}
|
|
@ -1,7 +1,10 @@
|
|||
package com.hzs.sale.wares.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresExtend;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import com.hzs.sale.order.param.WaresNumberParam;
|
||||
import com.hzs.sale.order.vo.WaresPreSaleVo;
|
||||
import com.hzs.sale.wares.mapper.BdWaresExtendMapper;
|
||||
|
@ -9,6 +12,7 @@ import com.hzs.sale.wares.service.IBdWaresExtendService;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -42,4 +46,20 @@ public class BdWaresExtendServiceImpl extends ServiceImpl<BdWaresExtendMapper, B
|
|||
return baseMapper.selectByWaresCodeList(waresCodeList, specialArea);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BdWaresExtend> listByPkWaresList(Collection<Integer> pkWaresList) {
|
||||
if (CollectionUtil.isNotEmpty(pkWaresList)) {
|
||||
return this.list(Wrappers.<BdWaresExtend>lambdaQuery()
|
||||
.in(BdWaresExtend::getPkWares, pkWaresList)
|
||||
.orderByAsc(BdWaresExtend::getPkWares)
|
||||
);
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int batchUpdateInventoryUse(List<BdWaresMemberLimit> limitList) {
|
||||
return baseMapper.batchUpdateInventoryUse(limitList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package com.hzs.sale.wares.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresMemberLimit;
|
||||
import com.hzs.sale.wares.mapper.BdWaresMemberLimitMapper;
|
||||
import com.hzs.sale.wares.service.IBdWaresMemberLimitService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员商品限购 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class BdWaresMemberLimitServiceImpl extends ServiceImpl<BdWaresMemberLimitMapper, BdWaresMemberLimit> implements IBdWaresMemberLimitService {
|
||||
|
||||
@Override
|
||||
public int updateWaresMemberLimitBatch(List<BdWaresMemberLimit> waresMemberLimitList) {
|
||||
return baseMapper.updateWaresMemberLimitBatch(waresMemberLimitList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BdWaresMemberLimit> listMemberWaresLimit(Long pkMember, Collection<Integer> pkWaresList) {
|
||||
return this.list(Wrappers.<BdWaresMemberLimit>lambdaQuery()
|
||||
.eq(BdWaresMemberLimit::getPkMember, pkMember)
|
||||
.in(BdWaresMemberLimit::getPkWares, pkWaresList)
|
||||
.orderByAsc(BdWaresMemberLimit::getPkWares)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -85,4 +85,19 @@
|
|||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 批量更新已用库存 -->
|
||||
<update id="batchUpdateInventoryUse">
|
||||
merge into bd_wares_extend bwe
|
||||
using (
|
||||
<foreach collection="limitList" item="items" separator=" union all">
|
||||
select #{items.pkWares} pk_wares,
|
||||
#{items.quantity} quantity
|
||||
from dual
|
||||
</foreach>
|
||||
) tmp
|
||||
on (bwe.pk_wares = tmp.pk_wares)
|
||||
when matched then
|
||||
update set bwe.inventory_use = bwe.inventory_use + tmp.quantity
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.sale.wares.mapper.BdWaresMemberLimitMapper">
|
||||
|
||||
<!-- 批量更新会员限购数据 -->
|
||||
<update id="updateWaresMemberLimitBatch">
|
||||
merge into BD_WARES_MEMBER_LIMIT bwml
|
||||
using (
|
||||
<foreach collection="limitList" item="items" separator=" union all">
|
||||
select #{items.pkMember} pk_member,
|
||||
#{items.pkWares} pk_wares,
|
||||
#{items.limitType} limit_type,
|
||||
#{items.quantity} quantity,
|
||||
#{items.limitDate} limit_date
|
||||
from dual
|
||||
</foreach>
|
||||
) tmp
|
||||
on (bwml.PK_MEMBER = tmp.pk_member and bwml.PK_WARES = tmp.pk_wares and bwml.limit_date = tmp.limit_date and bwml.del_flag = 0)
|
||||
when matched then
|
||||
update set bwml.quantity = bwml.quantity + tmp.quantity
|
||||
WHEN NOT MATCHED THEN
|
||||
insert (
|
||||
pk_id,
|
||||
pk_member,
|
||||
pk_wares,
|
||||
limit_type,
|
||||
quantity,
|
||||
pk_creator,
|
||||
limit_date)
|
||||
values (
|
||||
bd_wares_member_limit_seq.nextval,
|
||||
tmp.pk_member,
|
||||
tmp.pk_wares,
|
||||
tmp.limit_type,
|
||||
tmp.quantity,
|
||||
tmp.pk_member,
|
||||
tmp.limit_date)
|
||||
</update>
|
||||
|
||||
</mapper>
|
|
@ -5,8 +5,6 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
/**
|
||||
* 读取项目相关配置
|
||||
*
|
||||
* @author hzs
|
||||
*/
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "txmconfig")
|
||||
|
|
|
@ -11,8 +11,6 @@ import com.alibaba.fastjson2.JSONWriter;
|
|||
|
||||
/**
|
||||
* Redis使用FastJson序列化
|
||||
*
|
||||
* @author hzs
|
||||
*/
|
||||
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
|
||||
|
||||
|
|
|
@ -9,12 +9,7 @@ import org.springframework.context.annotation.Configuration;
|
|||
import javax.servlet.DispatcherType;
|
||||
|
||||
/**
|
||||
* description: 通过FilterRegistrationBean注册自定义过滤器TrimFilter
|
||||
* @author: sui q
|
||||
* @time: 2023/4/3 14:05
|
||||
* @classname: WebBindingInitializerConfiguration
|
||||
* @package_name: com.hzs.gateway.config
|
||||
* version 1.0.0
|
||||
* 通过FilterRegistrationBean注册自定义过滤器TrimFilter
|
||||
*/
|
||||
@Configuration
|
||||
public class FilterConfig {
|
||||
|
@ -28,7 +23,7 @@ public class FilterConfig {
|
|||
registration.setFilter(new TrimFilter());
|
||||
registration.addUrlPatterns("/**");
|
||||
registration.setName("paramsFilter");
|
||||
registration.setOrder(Integer.MAX_VALUE-1);
|
||||
registration.setOrder(Integer.MAX_VALUE - 1);
|
||||
return registration;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,6 @@ import org.springframework.context.annotation.Configuration;
|
|||
|
||||
/**
|
||||
* MybatisPlus配置
|
||||
*
|
||||
* @author hzs
|
||||
*/
|
||||
@Configuration
|
||||
public class MyBatisPlusConfig {
|
||||
|
|
|
@ -5,8 +5,6 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
/**
|
||||
* 读取项目相关配置
|
||||
*
|
||||
* @author: jiiangchao
|
||||
*/
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "oss")
|
||||
|
|
|
@ -12,8 +12,6 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|||
|
||||
/**
|
||||
* redis配置
|
||||
*
|
||||
* @author hzs
|
||||
*/
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
|
|
|
@ -4,11 +4,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Description: 需要审批业务类型大类
|
||||
* @Author: sui q
|
||||
* @Time: 2022/10/21 15:09
|
||||
* @Classname: EApprovalType
|
||||
* @PackageName: com.hzs.common.core.enums
|
||||
* 需要审批业务类型大类
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* Description: 审批操作
|
||||
* Author: jiang chao
|
||||
* Time: 2022/9/21 15:13
|
||||
* Classname: ApprovalParam
|
||||
* PackageName: com.hzs.system.sys.param
|
||||
* 审批操作
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -5,12 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* Description: 审批状态
|
||||
*
|
||||
* @author: sui q
|
||||
* Time: 2022/9/1 9:06
|
||||
* Classname: EApproveStatus
|
||||
* PackageName: com.hzs.common.core.enums
|
||||
* 审批状态
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -5,8 +5,6 @@ import lombok.Getter;
|
|||
|
||||
/**
|
||||
* 绑定标记枚举类
|
||||
*
|
||||
* @author hzs
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -24,14 +24,6 @@ public enum EChangeType {
|
|||
* 3=分红考核扣除
|
||||
*/
|
||||
SHARE_ASSESSMENT_DEDUCT(3, "分红考核扣除", 0, EnumsPrefixConstants.CHANGE_TYPE + 3),
|
||||
/**
|
||||
* 4=优选考核新增
|
||||
*/
|
||||
LENJOY_ASSESSMENT_ADD(4, "优选考核新增", 1, EnumsPrefixConstants.CHANGE_TYPE + 4),
|
||||
/**
|
||||
* 5=优选考核扣除
|
||||
*/
|
||||
LENJOY_ASSESSMENT_DEDUCT(5, "优选考核扣除", 1, EnumsPrefixConstants.CHANGE_TYPE + 5),
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
package com.hzs.common.core.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 限购类型
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum ELimitType {
|
||||
|
||||
/**
|
||||
* 总限购
|
||||
*/
|
||||
TOTAL(0, "总限购", "0"),
|
||||
|
||||
/**
|
||||
* 年限购
|
||||
*/
|
||||
YEAR(1, "年限购", "yyyy"),
|
||||
|
||||
/**
|
||||
* 月限购
|
||||
*/
|
||||
MONTH(2, "月限购", "yyyyMM"),
|
||||
|
||||
/**
|
||||
* 日限购
|
||||
*/
|
||||
DAY(3, "日限购", "yyyyMMdd"),
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
* 实际值
|
||||
*/
|
||||
private final int value;
|
||||
/**
|
||||
* 显示标签
|
||||
*/
|
||||
private final String label;
|
||||
/**
|
||||
* 限购格式
|
||||
*/
|
||||
private final String format;
|
||||
|
||||
/**
|
||||
* 获取秒杀限购类型
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static List<ELimitType> getLiveLimitType() {
|
||||
// 总、月
|
||||
return Arrays.asList(ELimitType.TOTAL, ELimitType.MONTH);
|
||||
}
|
||||
|
||||
}
|
|
@ -6,12 +6,6 @@ import lombok.Getter;
|
|||
|
||||
/**
|
||||
* 结算周期 枚举
|
||||
*
|
||||
* @author: sui q
|
||||
* @time: 2022/8/25 14:24
|
||||
* @description:
|
||||
* @classname: ESettlePeriod
|
||||
* @package_name: com.hzs.common.core.enums
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Description: 奖学结算周期枚举
|
||||
* @Author: zhangjing
|
||||
* @Time: 2022/9/1 17:39
|
||||
* @Classname: ESettlementCycle
|
||||
* @PackageName: com.hzs.common.core.enums
|
||||
* 奖学结算周期枚举
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
@ -31,7 +27,6 @@ public enum ESettlementCycle {
|
|||
MONTH(3, "月", 0, EnumsPrefixConstants.SETTLE_PERIOD + 3),
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,12 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 奖金配置表
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-10-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
|
|
@ -15,9 +15,6 @@ import lombok.experimental.Accessors;
|
|||
|
||||
/**
|
||||
* 服务补贴
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-11-01
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
|
|
@ -1,99 +0,0 @@
|
|||
package com.hzs.common.domain.ground.margin;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 保证金缴纳
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2024-03-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@KeySequence("TH_MARGIN_SEQ")
|
||||
@TableName("TH_MARGIN")
|
||||
public class ThMargin extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId("PK_ID")
|
||||
private Integer pkId;
|
||||
|
||||
/**
|
||||
* 缴纳供应商
|
||||
*/
|
||||
@TableField("PK_SUPPLIER")
|
||||
private Integer pkSupplier;
|
||||
|
||||
/**
|
||||
* 缴纳日期
|
||||
*/
|
||||
@TableField("BILL_DATE")
|
||||
private Date billDate;
|
||||
|
||||
/**
|
||||
* 销售类型 引用现在销售大类
|
||||
*/
|
||||
@TableField("SALE_TYPE")
|
||||
private Integer saleType;
|
||||
|
||||
/**
|
||||
* 销售范围
|
||||
*/
|
||||
@TableField("SALE_SCOPE")
|
||||
private Integer saleScope;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@TableField("PHONE")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
@TableField("LINK_MAN")
|
||||
private String linkMan;
|
||||
|
||||
/**
|
||||
* 保证金金额
|
||||
*/
|
||||
@TableField("MARGIN")
|
||||
private BigDecimal margin;
|
||||
|
||||
/**
|
||||
* 审批业务类型 来源枚举 EApprovalBusiness
|
||||
*/
|
||||
@TableField("EDIT_TYPE")
|
||||
private Integer editType;
|
||||
|
||||
/**
|
||||
* 审核状态 来源枚举 EApproveStatus
|
||||
*/
|
||||
@TableField("APPROVE_STATUS")
|
||||
private Integer approveStatus;
|
||||
|
||||
@TableField("TH_BUSINESS_CODE")
|
||||
private String thBusinessCode;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -2,7 +2,9 @@ package com.hzs.common.domain.ground.supplier;
|
|||
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
|
@ -11,12 +13,7 @@ import lombok.EqualsAndHashCode;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 供应商申请
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2024-03-21
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
@ -183,6 +180,4 @@ public class ThSupplierApply extends BaseEntity {
|
|||
private String thBusinessCode;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package com.hzs.common.domain.sale.wares;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 会员商品限购
|
||||
*/
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@KeySequence("BD_WARES_MEMBER_LIMIT_SEQ")
|
||||
@TableName("BD_WARES_MEMBER_LIMIT")
|
||||
public class BdWaresMemberLimit extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId("PK_ID")
|
||||
private Long pkId;
|
||||
|
||||
/**
|
||||
* 会员ID
|
||||
*/
|
||||
@TableField("PK_MEMBER")
|
||||
private Long pkMember;
|
||||
|
||||
/**
|
||||
* 商品ID
|
||||
*/
|
||||
@TableField("PK_WARES")
|
||||
private Integer pkWares;
|
||||
|
||||
/**
|
||||
* 限购类型(1=总,2=年,3=月,4=日)
|
||||
*/
|
||||
@TableField("LIMIT_TYPE")
|
||||
private Integer limitType;
|
||||
|
||||
/**
|
||||
* 购买数量
|
||||
*/
|
||||
@TableField("QUANTITY")
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* 限购时间(总限购为,年限购为4位年,月限购为6位月,日限购为8位日)
|
||||
*/
|
||||
@TableField("LIMIT_DATE")
|
||||
private String limitDate;
|
||||
|
||||
}
|
Loading…
Reference in New Issue