src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -142,4 +142,6 @@ @TableField(exist = false) private String expressNo; private Integer isFree; } src/main/java/cc/mrbird/febs/mall/vo/OrderListVo.java
@@ -60,4 +60,7 @@ @ApiModelProperty(value = "快递单号") private String expressNo; @ApiModelProperty(value = "是否赠送 1-是 2-否") private Integer isFree; } src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
@@ -207,6 +207,7 @@ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); orderInfo.setOrderType(goods.getGoodsType()); orderInfo.setDeliveryType(2); orderInfo.setIsFree(1); orderInfo.setCarriage(BigDecimal.ZERO); orderInfo.setAmount(BigDecimal.ZERO); orderInfo.setAddressId(address.getId()); src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -85,11 +85,19 @@ return; } LambdaQueryWrapper<MallVipConfig> configQuery = new LambdaQueryWrapper<>(); configQuery.gt(MallVipConfig::getLevel, config.getLevel()) .orderByAsc(MallVipConfig::getLevel) .last("limit 1"); MallVipConfig nextLevel = mallVipConfigMapper.selectOne(configQuery); // LambdaQueryWrapper<MallVipConfig> configQuery = new LambdaQueryWrapper<>(); // configQuery.gt(MallVipConfig::getLevel, config.getLevel()) // .orderByAsc(MallVipConfig::getLevel) // .last("limit 1"); // MallVipConfig nextLevel = mallVipConfigMapper.selectOne(configQuery); List<MallVipConfig> configs = mallVipConfigMapper.selectVipConfigList(); String nextLevelCode = ""; for (MallVipConfig nextLevel : configs) { if (config.getLevel() >= nextLevel.getLevel()) { continue; } // 指定商品 if (nextLevel.getType() == 1) { @@ -97,19 +105,13 @@ return item.getGoodsId().equals(nextLevel.getTargetId()); }); if (!hasMatch) { log.info("未购买指定商品"); return; if (hasMatch) { nextLevelCode = nextLevel.getCode(); continue; } } MallMember update = new MallMember(); update.setId(member.getId()); update.setLevel(nextLevel.getCode()); mallMemberMapper.updateById(update); return; } // // 时间区间内金额 if (nextLevel.getType() == 2) { Date endTime = DateUtil.endOfDay(new Date()); Date startTime = getStartTime(nextLevel.getValidType()); @@ -121,23 +123,23 @@ .eq(MallOrderInfo::getMemberId, member.getId()); List<MallOrderInfo> orderList = mallOrderInfoMapper.selectList(query); if (CollUtil.isEmpty(orderList)) { return; continue; } double totalAmount = orderList.stream().mapToDouble(item -> { return item.getAmount().doubleValue(); }).sum(); if (nextLevel.getAmount().compareTo(BigDecimal.valueOf(totalAmount)) > 0) { log.info("未达到指定金额:{}, {}", nextLevel.getAmount(), totalAmount); return; if (nextLevel.getAmount().compareTo(BigDecimal.valueOf(totalAmount)) <= 0) { nextLevelCode = nextLevel.getCode(); } } } MallMember update = new MallMember(); update.setId(member.getId()); update.setLevel(nextLevel.getCode()); update.setLevel(nextLevelCode); mallMemberMapper.updateById(update); } } private Date getStartTime(String type) { src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -374,6 +374,7 @@ <result column="take_unique_code" property="takeUniqueCode" /> <result column="delivery_state" property="deliveryState" /> <result column="is_home" property="isHome" /> <result column="is_free" property="isFree" /> <result column="del_flag" property="delFlag" /> <result column="leader_name" property="leaderName" /> <result column="leader_phone" property="leaderPhone" /> src/main/resources/mapper/modules/MallVipConfigMapper.xml
@@ -8,8 +8,9 @@ <result property="thumb" column="thumb" /> <result property="level" column="level" /> <result property="validTime" column="valid_time" /> <result property="validType" column="valid_time" /> <result property="validType" column="valid_type" /> <result property="type" column="type" /> <result property="code" column="code" /> <result property="amount" column="amount" /> <result property="times" column="times" /> <result property="targetId" column="target_id" /> src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -967,4 +967,9 @@ BigDecimal amount = new BigDecimal("0.15").setScale(2,BigDecimal.ROUND_DOWN); System.out.println(amount); } @Test public void aaaTest() { agentConsumer.vipLevelUp(133L); } }