From 48dcbb226d4d33c6ff02b7e68c1c591bcd88270e Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 24 Feb 2023 16:30:41 +0800
Subject: [PATCH] 后台订单显示修改
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 270 ++++++++++++++++++++++-------------------------------
1 files changed, 111 insertions(+), 159 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 2c4106a..efece73 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -86,31 +86,17 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Long createOrder(AddOrderDto addOrderDto) {
-// synchronized(this){
MallMember member = LoginUserUtil.getLoginUser();
- String takeUniqueCode = addOrderDto.getTakeUniqueCode();
- if(StrUtil.isEmpty(takeUniqueCode)){
- throw new FebsException("请选择自提点");
- }
-
- MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
- if(ObjectUtil.isEmpty(mallTeamLeader)){
- throw new FebsException("请重新选择团长");
- }
+ //验证用户的等级
+// if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
+// throw new FebsException("请先申请成为代理人");
+// }
//订单范围内才允许下单
MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
if(ObjectUtil.isEmpty(address)){
- throw new FebsException("请重新选择提货人信息");
+ throw new FebsException("请重新选择收货地址信息");
}
-// MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
-// if(ObjectUtil.isNotEmpty(mallElectronicFence)){
-// String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
-// mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
-// if("1".equals(inStr)){
-// throw new FebsException("不在当前团长的配送范围内");
-// }
-// }
String orderNo = MallUtils.getOrderNum();
MallOrderInfo orderInfo = new MallOrderInfo();
@@ -120,17 +106,13 @@
orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
orderInfo.setRemark(addOrderDto.getRemark());
orderInfo.setOrderType(addOrderDto.getOrderType());
-
- orderInfo.setTakeUniqueCode(addOrderDto.getTakeUniqueCode());
- orderInfo.setDeliveryType(1);
-
+ orderInfo.setDeliveryType(2);
if (CollUtil.isEmpty(addOrderDto.getItems())) {
throw new FebsException("参数错误");
}
-
this.baseMapper.insert(orderInfo);
+
BigDecimal total = BigDecimal.ZERO;
- BigDecimal carriage = BigDecimal.ZERO;
for (AddOrderItemDto item : addOrderDto.getItems()) {
MallOrderItem orderItem = new MallOrderItem();
@@ -164,6 +146,18 @@
throw new FebsException("购买商品或sku不存在");
}
+ if("样品".equals(sku.getSample())){
+ List<MallOrderItem> items = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
+ if (CollUtil.isNotEmpty(items)) {
+ throw new FebsException("样品一个用户只能购买一次");
+ }
+ Integer cnt = item.getCnt();
+ if(1 < cnt){
+ throw new FebsException("样品只能购买一件");
+ }
+
+ }
+
if (sku.getStock() < item.getCnt()) {
throw new FebsException(sku.getSkuName() + "库存不足");
}
@@ -180,9 +174,7 @@
if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
throw new FebsException(mallGoods.getGoodsName() + "已下架");
}
-
-// mallGoods.setStock(mallGoods.getStock() - item.getCnt());
-// mallGoods.setVolume(mallGoods.getVolume() + item.getCnt());
+ //商品库存销量计算
Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), item.getCnt());
if(1 != goodsResult){
throw new FebsException(mallGoods.getGoodsName() + "库存不足");
@@ -204,11 +196,7 @@
orderItem.setCostPrice(sku.getCostPrice());
total = total.add(amount);
- carriage = carriage.add(mallGoods.getCarriage());
-
-// sku.setStock(sku.getStock() - item.getCnt());
-// sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
-// mallGoodsSkuMapper.updateById(sku);
+ //规格的库存销量
Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt());
if(1 != skuResult){
throw new FebsException(sku.getSkuName() + "库存不足");
@@ -219,31 +207,27 @@
}
mallOrderItemMapper.insert(orderItem);
}
- //配送费
+ //运费
BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
- if(BigDecimal.ZERO.compareTo(delivaryAmount) < 0 && 1 == addOrderDto.getIsHome()){
- total = total.add(delivaryAmount);
- orderInfo.setCarriage(delivaryAmount);
- }
- orderInfo.setAmount(total);
+ orderInfo.setCarriage(delivaryAmount);
+ total = total.add(delivaryAmount);
+ orderInfo.setAmount(total);
+ orderInfo.setAddressId(address.getId());
orderInfo.setName(address.getName());
orderInfo.setPhone(address.getPhone());
orderInfo.setIsHome(addOrderDto.getIsHome());
- //订单金额大于50,且选择送货上门,订单需要选择地址信息
- if(1 == addOrderDto.getIsHome()){
- if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) {
- throw new FebsException("请添加地址");
- }
- orderInfo.setAddress(address.getArea() + address.getAddress());
- orderInfo.setLatitude(address.getLatitude());
- orderInfo.setLongitude(address.getLongitude());
- }
- this.baseMapper.updateById(orderInfo);
- agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
+ if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) {
+ throw new FebsException("请添加地址");
+ }
+ orderInfo.setAddress(address.getProvince()+address.getCity()+address.getArea() + address.getAddress());
+ orderInfo.setLatitude(address.getLatitude());
+ orderInfo.setLongitude(address.getLongitude());
+ this.baseMapper.updateById(orderInfo);
+ //过期时间修改成24小时
+ agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 24 * 60 * 60 * 1000L);
return orderInfo.getId();
-// }
}
@@ -348,8 +332,6 @@
String wxResultStr = "";
switch (payOrderDto.getType()) {
case "1":
-// orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
-// orderInfo.setPayImage(payOrderDto.getPayImage());
BrandWCPayRequestData brandWCPayRequestData = null;
try {
brandWCPayRequestData = iXcxPayService.startPayment(orderInfo);
@@ -359,7 +341,6 @@
wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData);
payResultStr = brandWCPayRequestData.getPrepay_id();
orderInfo.setPayMethod("微信支付");
-// agentProducer.sendOrderReturn(orderInfo.getId());
break;
case "2":
if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) {
@@ -382,43 +363,7 @@
orderInfo.setPayResult("1");
orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
-// boolean hasTc = false;
-// // 静态倍数
-// List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
-// if (CollUtil.isNotEmpty(orderItems)) {
-// for (MallOrderItem orderItem : orderItems) {
-// MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
-// BigDecimal score = BigDecimal.ZERO;
-// MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
-// if (mallGoods.getIsNormal() == 2) {
-// hasTc = true;
-// score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti()).multiply(new BigDecimal(orderItem.getCnt()));
-//// BigDecimal staticMulti = mallGoods.getStaticMulti() == null ? BigDecimal.ZERO : mallGoods.getStaticMulti();
-//// score = sku.getPresentPrice().multiply(staticMulti);
-// }
-//
-// if (score.compareTo(BigDecimal.ZERO) > 0) {
-// memberWalletService.add(score, member.getId(), "score");
-// mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
-//
-// // 添加业绩
-// mallAchieveService.add(orderItem.getId());
-// }
-// }
-// }
-
- // 购买套餐后,升级为普通会员
-// if (hasTc) {
-// MallMember mallMember = memberMapper.selectById(member.getId());
-// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
-// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
-// memberMapper.updateById(mallMember);
-// }
-// }
-
mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
-// agentProducer.sendAutoLevelUpMsg(member.getId());
-// agentProducer.sendOrderReturn(orderInfo.getId());
break;
case "4":
if (orderInfo.getOrderType() != 2) {
@@ -517,11 +462,11 @@
OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
-// if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) {
-// MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
-// orderDetailVo.setExpressNo(expressInfo.getExpressNo());
-// orderDetailVo.setExpressCom(expressInfo.getExpressCom());
-// }
+ MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
+ if(ObjectUtil.isNotEmpty(expressInfo)){
+ orderDetailVo.setExpressNo(expressInfo.getExpressNo());
+ orderDetailVo.setExpressCom(expressInfo.getExpressCom());
+ }
if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) {
MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
@@ -530,7 +475,7 @@
}
if (OrderStatusEnum.WAIT_PAY.getValue() == orderInfo.getStatus()) {
- Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 15);
+ Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 1440);
long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false);
orderDetailVo.setRemainTime(remainTime);
@@ -551,9 +496,9 @@
throw new FebsException("该状态不能确认收货");
}
- if (orderInfo.getDeliveryState() != OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()) {
- throw new FebsException("还未送至自提点");
- }
+// if (orderInfo.getDeliveryState() != OrderDeliveryStateEnum.DELIVERY_FINISH.getValue()) {
+// throw new FebsException("还未送至自提点");
+// }
List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(null, orderInfo.getId(), 3);
if(CollUtil.isNotEmpty(mallRefundEntities)){
@@ -565,33 +510,33 @@
this.baseMapper.updateById(orderInfo);
//生成一条团长提成记录
- Long orderInfoId = orderInfo.getId();
- List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
- if(CollUtil.isNotEmpty(mallOrderItemList)){
-
- MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
- Integer profitSwitch = mallTeamLeader.getProfitSwitch()==null?2:mallTeamLeader.getProfitSwitch();
- BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent());
-
- if(1 == profitSwitch){
- for(MallOrderItem mallOrderItem : mallOrderItemList){
- Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState();
- if(1 == state){
- MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve();
- mallLeaderAchieve.setMemberId(orderInfo.getMemberId());
- mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo());
- mallLeaderAchieve.setOrderItemId(mallOrderItem.getId());
- BigDecimal itemAmount = mallOrderItem.getAmount();
- mallLeaderAchieve.setAmount(itemAmount);
- BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN);
- mallLeaderAchieve.setProfitAmount(bigDecimal);
- mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode());
- mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE);
- mallLeaderAchieveMapper.insert(mallLeaderAchieve);
- }
- }
- }
- }
+// Long orderInfoId = orderInfo.getId();
+// List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
+// if(CollUtil.isNotEmpty(mallOrderItemList)){
+//
+// MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
+// Integer profitSwitch = mallTeamLeader.getProfitSwitch()==null?2:mallTeamLeader.getProfitSwitch();
+// BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent());
+//
+// if(1 == profitSwitch){
+// for(MallOrderItem mallOrderItem : mallOrderItemList){
+// Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState();
+// if(1 == state){
+// MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve();
+// mallLeaderAchieve.setMemberId(orderInfo.getMemberId());
+// mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo());
+// mallLeaderAchieve.setOrderItemId(mallOrderItem.getId());
+// BigDecimal itemAmount = mallOrderItem.getAmount();
+// mallLeaderAchieve.setAmount(itemAmount);
+// BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN);
+// mallLeaderAchieve.setProfitAmount(bigDecimal);
+// mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode());
+// mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE);
+// mallLeaderAchieveMapper.insert(mallLeaderAchieve);
+// }
+// }
+// }
+// }
}
@Override
@@ -894,42 +839,49 @@
}
@Override
- public Boolean createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) {
- Boolean flag = false;
- Long addressId = apiCreateOrderVerifyDto.getAddressId();
- String takeUniqueCode = apiCreateOrderVerifyDto.getTakeUniqueCode();
+ public FebsResponse createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember member = memberMapper.selectById(memberId);
+ List<AddOrderItemDto> items = apiCreateOrderVerifyDto.getItems();
+ if(CollUtil.isEmpty(items)){
+ return new FebsResponse().fail().message("请先挑选商品");
+ }
+ for (AddOrderItemDto item : apiCreateOrderVerifyDto.getItems()) {
+ MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+ if (sku == null) {
+ return new FebsResponse().fail().message("购买商品或sku不存在");
+ }
+ if("样品".equals(sku.getSample())){
+ List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
+ if (CollUtil.isNotEmpty(mallOrderItems)) {
+ return new FebsResponse().fail().message("样品只能购买一次");
+ }
+ Integer cnt = item.getCnt();
+ if(1 < cnt){
+ return new FebsResponse().fail().message("样品只能购买一件");
+ }
+ }else{
+ //验证用户的等级
+ if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
+ return new FebsResponse().fail().message("请先申请成为合伙人");
+ }
+ }
- MallAddressInfo mallAddressInfo = mallAddressInfoMapper.selectById(addressId);
- if(ObjectUtil.isEmpty(mallAddressInfo)){
- return flag;
- }
- MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(takeUniqueCode);
- if(ObjectUtil.isEmpty(mallElectronicFence)){
- return flag;
- }
- //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"}
- String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
- mallElectronicFence.getServiceId(),
- mallAddressInfo.getLongitude() + "," + mallAddressInfo.getLatitude(),
- mallElectronicFence.getGid());
- if("fail".equals(resultsStr)){
- return flag;
- }
- JSONArray objects = JSONUtil.parseArray(resultsStr);
- for(Object obj : objects){
- //{"gfid":800899,"gfname":"87053658_fence","in":0}
- JSONObject jsonObject = JSONUtil.parseObj(obj);
- String gfid = jsonObject.get("gfid").toString();
- String in = jsonObject.get("in").toString();
- String gfname = jsonObject.get("gfname").toString();
- //指定坐标是否在围栏中
- //1:在,
- //0:不在;
- if("1".equals(in)){
- flag = true;
+ if (sku.getStock() < item.getCnt()) {
+ return new FebsResponse().fail().message(sku.getSkuName() + "库存不足");
+ }
+
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
+ return new FebsResponse().fail().message(mallGoods.getGoodsName() + "已下架");
}
}
- return flag;
+
+ return new FebsResponse().success();
+ }
+
+ public static void main(String[] args) {
+ System.out.print(AgentLevelEnum.ZERO_LEVEL.name());
}
}
--
Gitblit v1.9.1