Browse Source

对接拼团数据

master
wangfukang 3 weeks ago
parent
commit
ff37ed8dff
  1. 14
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java
  2. 14
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java
  3. 24
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderServiceImpl.java
  4. 1
      hiver-modules/hiver-mall/src/main/resources/mapper/MallOrderGroupMapper.xml

14
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallDeliveryOrderServiceImpl.java

@ -21,8 +21,6 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -148,16 +146,8 @@ public class MallDeliveryOrderServiceImpl extends ServiceImpl<MallDeliveryOrderM
} }
} }
} }
// 若为指派单(直接购买),计算平台额外佣金 = 商品总价 * 2% //更新订单编号
if (StringUtils.isNotBlank(delivery.getOrderId())) { uw.set(MallDeliveryOrder::getNumberCode, numberCode);
if (order != null && order.getOrderType() == 1) {
BigDecimal bonus = order.getGoodsAmount()
.multiply(new BigDecimal("0.02"))
.setScale(2, RoundingMode.HALF_UP);
uw.set(MallDeliveryOrder::getNumberCode, numberCode);
}
}
this.update(uw); this.update(uw);
log.info("配送员 {} 接单成功,deliveryId={}", workerId, deliveryId); log.info("配送员 {} 接单成功,deliveryId={}", workerId, deliveryId);
return 3; return 3;

14
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java

@ -72,11 +72,11 @@ public class MallOrderGroupServiceImpl extends ServiceImpl<MallOrderGroupMapper,
if (group == null) return; if (group == null) return;
// 已成团或已失败不重复处理 // 已成团或已失败不重复处理
if (group.getStatus() == GROUP_STATUS_SUCCESS) return; //if (group.getStatus() == GROUP_STATUS_SUCCESS) return;
if (group.getCurrentMembers() < group.getTargetMembers()) return; if (group.getCurrentMembers() < group.getTargetMembers()) return;
// 达到成团人数 -> 激活 // 达到成团人数 -> 激活 (超出拼团人数也可以参与)
LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>();
guw.eq(MallOrderGroup::getId, groupId) guw.eq(MallOrderGroup::getId, groupId)
.set(MallOrderGroup::getStatus, GROUP_STATUS_SUCCESS); .set(MallOrderGroup::getStatus, GROUP_STATUS_SUCCESS);
@ -118,19 +118,19 @@ public class MallOrderGroupServiceImpl extends ServiceImpl<MallOrderGroupMapper,
// 面对面团参团人共享团长配送单,因此参团人本身没有配送单,直接跳过 // 面对面团参团人共享团长配送单,因此参团人本身没有配送单,直接跳过
continue; continue;
} }
// 取出预创建的运单进行校验 // 取出预创建的运单进行校验
LambdaQueryWrapper<MallDeliveryOrder> dqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<MallDeliveryOrder> dqw = new LambdaQueryWrapper<>();
dqw.eq(MallDeliveryOrder::getOrderId, order.getId()).last("LIMIT 1"); dqw.eq(MallDeliveryOrder::getOrderId, order.getId()).last("LIMIT 1");
MallDeliveryOrder delivery = mallDeliveryOrderMapper.selectOne(dqw); MallDeliveryOrder delivery = mallDeliveryOrderMapper.selectOne(dqw);
if (delivery != null) { if (delivery != null) {
if (StringUtils.isNotBlank(delivery.getWorkerId())) { if (StringUtils.isNotBlank(delivery.getWorkerId())) {
boolean isValid = false; boolean isValid = false;
Worker worker = workerService.findById(delivery.getWorkerId()); Worker worker = workerService.findById(delivery.getWorkerId());
if (worker != null && worker.getIsOnLine() != null && worker.getIsOnLine() == 1 if (worker != null && worker.getIsOnLine() != null && worker.getIsOnLine() == 1
&& worker.getGetPushOrder() != null && worker.getGetPushOrder() == 1) { && worker.getGetPushOrder() != null && worker.getGetPushOrder() == 1) {
LambdaQueryWrapper<WorkerRelaPrice> ruleQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<WorkerRelaPrice> ruleQuery = new LambdaQueryWrapper<>();
ruleQuery.eq(WorkerRelaPrice::getWorkerId, delivery.getWorkerId()) ruleQuery.eq(WorkerRelaPrice::getWorkerId, delivery.getWorkerId())
.eq(WorkerRelaPrice::getOrderType, 0) .eq(WorkerRelaPrice::getOrderType, 0)
@ -143,13 +143,13 @@ public class MallOrderGroupServiceImpl extends ServiceImpl<MallOrderGroupMapper,
isValid = true; isValid = true;
} }
} }
if (!isValid) { if (!isValid) {
// 配送员下线或规则关闭 -> 去掉 workerId 进入抢单大厅,保留原有补贴金 // 配送员下线或规则关闭 -> 去掉 workerId 进入抢单大厅,保留原有补贴金
delivery.setWorkerId(""); delivery.setWorkerId("");
} }
} }
// 统一修改运单状态为0使其生效 // 统一修改运单状态为0使其生效
delivery.setStatus(0); delivery.setStatus(0);
mallDeliveryOrderMapper.updateById(delivery); mallDeliveryOrderMapper.updateById(delivery);

24
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderServiceImpl.java

@ -249,7 +249,7 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
group.setShopId(dto.getShopId()); group.setShopId(dto.getShopId());
group.setHeadUserId(dto.getUserId()); group.setHeadUserId(dto.getUserId());
group.setTargetMembers(gp.getTargetMembers()); group.setTargetMembers(gp.getTargetMembers());
group.setCurrentMembers(1); //group.setCurrentMembers(1);
if(dto.getItems() != null && dto.getItems().size() > 0){ if(dto.getItems() != null && dto.getItems().size() > 0){
dto.getItems().forEach(item -> { dto.getItems().forEach(item -> {
if(item.getIsMain() != null){ if(item.getIsMain() != null){
@ -317,9 +317,10 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
if (group.getStatus() != GROUP_STATUS_FORMING && group.getStatus() != GROUP_STATUS_FACE2FACE) { if (group.getStatus() != GROUP_STATUS_FORMING && group.getStatus() != GROUP_STATUS_FACE2FACE) {
throw new RuntimeException("当前拼团状态不可参团"); throw new RuntimeException("当前拼团状态不可参团");
} }
if (group.getCurrentMembers() >= group.getTargetMembers()) { //超出拼团人数 也可以参与
/*if (group.getCurrentMembers() >= group.getTargetMembers()) {
throw new RuntimeException("拼团已满员"); throw new RuntimeException("拼团已满员");
} }*/
boolean isFace2Face = (group.getStatus() == GROUP_STATUS_FACE2FACE); boolean isFace2Face = (group.getStatus() == GROUP_STATUS_FACE2FACE);
@ -349,7 +350,8 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
// 更新拼团人数和成员列表 // 更新拼团人数和成员列表
int newMembers = group.getCurrentMembers() + 1; int newMembers = group.getCurrentMembers() + 1;
String newOrderIds = group.getGroupOrderIds() + "," + order.getId(); String newOrderIds = group.getGroupOrderIds() + "," + order.getId();
group.setCurrentMembers(newMembers); //支付成功才更新参团人数
// group.setCurrentMembers(newMembers);
group.setGroupOrderIds(newOrderIds); group.setGroupOrderIds(newOrderIds);
mallOrderGroupMapper.updateById(group); mallOrderGroupMapper.updateById(group);
@ -419,12 +421,24 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
.like(MallOrderGroup::getGroupOrderIds, order.getId()) .like(MallOrderGroup::getGroupOrderIds, order.getId())
.last("LIMIT 1"); .last("LIMIT 1");
group = mallOrderGroupMapper.selectOne(gq2); group = mallOrderGroupMapper.selectOne(gq2);
//更新参团人数+1
int newMembers = group.getCurrentMembers() + 1;
LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>();
guw.eq(MallOrderGroup::getId, group.getId())
.set(MallOrderGroup::getCurrentMembers, newMembers);
mallOrderGroupMapper.update(group,guw);
}else{ }else{
// 团长支付 且不是面对面团 状态改为待成团 // 团长支付 且不是面对面团 状态改为待成团
int newMembers = 1;
if(group.getIsFace() != 1){ if(group.getIsFace() != 1){
LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>();
guw.eq(MallOrderGroup::getId, group.getId()) guw.eq(MallOrderGroup::getId, group.getId())
.set(MallOrderGroup::getStatus, GROUP_STATUS_FORMING); .set(MallOrderGroup::getStatus, GROUP_STATUS_FORMING).set(MallOrderGroup::getCurrentMembers, newMembers);
mallOrderGroupMapper.update(group,guw);
}else{
LambdaUpdateWrapper<MallOrderGroup> guw = new LambdaUpdateWrapper<>();
guw.eq(MallOrderGroup::getId, group.getId())
.set(MallOrderGroup::getCurrentMembers, newMembers);
mallOrderGroupMapper.update(group,guw); mallOrderGroupMapper.update(group,guw);
} }
} }

1
hiver-modules/hiver-mall/src/main/resources/mapper/MallOrderGroupMapper.xml

@ -41,6 +41,7 @@
AND status = #{group.status} AND status = #{group.status}
</if> </if>
</where> </where>
order by create_time asc
</select> </select>

Loading…
Cancel
Save