|
|
@ -5,6 +5,7 @@ import com.cyl.h5.service.H5MemberService; |
|
|
|
import com.cyl.h5.service.H5OrderService; |
|
|
|
import com.cyl.manager.oms.domain.OmsOrderService; |
|
|
|
import com.cyl.manager.oms.domain.Order; |
|
|
|
import com.cyl.manager.oms.mapper.OrderMapper; |
|
|
|
import com.cyl.manager.oms.service.OmsOrderServiceService; |
|
|
|
import com.cyl.manager.oms.service.OrderService; |
|
|
|
import com.cyl.manager.staff.service.IDispatchOrderService; |
|
|
@ -17,15 +18,20 @@ import com.cyl.tencent.OrderMessageModel; |
|
|
|
import com.cyl.tencent.QueueConsumer; |
|
|
|
import com.ruoyi.applet.service.IMallOrderService; |
|
|
|
import com.ruoyi.common.config.properties.SmsProperties; |
|
|
|
import com.ruoyi.common.constant.Constants; |
|
|
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
|
|
import com.ruoyi.common.core.sms.AliyunSmsUtils; |
|
|
|
import com.ruoyi.common.exception.ServiceException; |
|
|
|
import com.ruoyi.common.utils.StringUtils; |
|
|
|
import com.ruoyi.model.domain.*; |
|
|
|
import com.ruoyi.model.service.*; |
|
|
|
import com.wechat.pay.java.core.util.GsonUtil; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import lombok.val; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Qualifier; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.text.ParseException; |
|
|
@ -43,6 +49,8 @@ import java.util.concurrent.atomic.AtomicReference; |
|
|
|
@Component |
|
|
|
public class TaskConsumer implements QueueConsumer { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private OrderMapper orderMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
@Qualifier("taskQueue") |
|
|
@ -82,7 +90,23 @@ public class TaskConsumer implements QueueConsumer { |
|
|
|
private boolean run; |
|
|
|
private TaskThread[] taskThreads; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IAppUsersService appUsersService; |
|
|
|
@Autowired |
|
|
|
private IAppletConfigService configService; |
|
|
|
@Autowired |
|
|
|
private IAppletOrderService appletOrderService; |
|
|
|
@Autowired |
|
|
|
private IAppletOrderItemService appletOrderItemService; |
|
|
|
@Autowired |
|
|
|
private IAppletUsersTeacherService appletUsersTeacherService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private IAppletConfigService appletConfigService; |
|
|
|
|
|
|
|
private class TaskThread extends Thread { |
|
|
|
|
|
|
@ -113,10 +137,16 @@ public class TaskConsumer implements QueueConsumer { |
|
|
|
log.info("指定派单---------------------------------------"); |
|
|
|
mallOrderService.acceptDispatch(model.getOrder().getTeacherId(), h5OrderVO); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//进行派单操作 |
|
|
|
dispatchedOrdersService.dispatch(model.getOrder().getId()); |
|
|
|
// dispatchedOrdersService.dispatch(model.getOrder().getId()); |
|
|
|
//TODO 等待订单逻辑完成 |
|
|
|
smsHandler(model.getOrder()); |
|
|
|
|
|
|
|
startOrder(h5OrderVO, model.getOrder()); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
log.error("task消费异常:{}", e); |
|
|
|
} |
|
|
@ -260,6 +290,99 @@ public class TaskConsumer implements QueueConsumer { |
|
|
|
return memberPointHistory; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void startOrder(H5OrderVO h5OrderVO, Order omsOrder){ |
|
|
|
try { |
|
|
|
if (h5OrderVO.getOldOrderId() != null && h5OrderVO.getOldOrderId() != 0){ |
|
|
|
log.info("修改订单startOrder(H5OrderVO {}, Order {})", h5OrderVO, omsOrder); |
|
|
|
//按照原订单进行接单 |
|
|
|
H5OrderVO oldOrder = h5OrderService.orderDetail(h5OrderVO.getOldOrderId()); |
|
|
|
if(oldOrder != null && oldOrder.getAcceptAppUserId() != null |
|
|
|
&& oldOrder.getAcceptAppUserId() != 0){ |
|
|
|
|
|
|
|
if (omsOrder != null && omsOrder.getStatus() == Constants.H5OrderStatus.NOT_DELIVERED){ |
|
|
|
omsOrder.setStatus(Constants.H5OrderStatus.DELIVERED); |
|
|
|
omsOrder.setAcceptAppUserId(oldOrder.getAcceptAppUserId()); |
|
|
|
orderMapper.updateById(omsOrder); |
|
|
|
}else { |
|
|
|
throw new ServiceException("订单已被接单"); |
|
|
|
} |
|
|
|
|
|
|
|
AppletOrder appletOrder = appletOrderService.lambdaQuery() |
|
|
|
.eq(AppletOrder::getOrderId, omsOrder.getId()).one(); |
|
|
|
|
|
|
|
if (appletOrder == null){ |
|
|
|
throw new ServiceException("无效订单"); |
|
|
|
} |
|
|
|
if(appletOrder.getStatus() == 1){ |
|
|
|
throw new ServiceException("该订单已被接单"); |
|
|
|
} |
|
|
|
|
|
|
|
appletOrder.setUserId(oldOrder.getAcceptAppUserId()); |
|
|
|
appletOrder.setStatus(1); |
|
|
|
appletOrderService.updateById(appletOrder); |
|
|
|
|
|
|
|
//生成我的订单信息 |
|
|
|
AppletOrderItem appletOrderItem = new AppletOrderItem(); |
|
|
|
long id = System.currentTimeMillis(); |
|
|
|
appletOrderItem.setId(id); |
|
|
|
appletOrderItem.setCreateTime(appletOrder.getCreateTime()); |
|
|
|
appletOrderItem.setType(appletOrder.getType()); |
|
|
|
appletOrderItem.setStatus(1); |
|
|
|
// appletOrderItem.setReason(appletOrder.getReason()); |
|
|
|
appletOrderItem.setStartTime(LocalDateTime.now()); |
|
|
|
appletOrderItem.setUserId(appletOrder.getUserId()); |
|
|
|
//根据用户标识查询用户认证信息 |
|
|
|
AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId()); |
|
|
|
AppletUsersTeacher appletUsersTeacher = appletUsersTeacherService.selectAppletUsersTeacherByUserId(appletOrder.getUserId()); |
|
|
|
appletOrderItem.setName(appletUsersTeacher.getName()); |
|
|
|
appletOrderItem.setPhone(appletUsersTeacher.getPhone()); |
|
|
|
appletOrderItem.setOrderStatus(0); |
|
|
|
|
|
|
|
//得到当前用户的伴宠师等级 |
|
|
|
Integer userBcs = appUsers.getUserBcs(); |
|
|
|
//查询用户的当前分配比例 |
|
|
|
AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcs); |
|
|
|
//得到配置百分比 |
|
|
|
BigDecimal percent = petPaymentBcs.getParamValueNo(); |
|
|
|
//得到订单支付金额 |
|
|
|
BigDecimal orderPrice = appletOrder.getPrice(); |
|
|
|
//计算订单佣金 = 支付金额 * 百分比 |
|
|
|
BigDecimal orderGivePrice = orderPrice.multiply(percent); |
|
|
|
appletOrderItem.setPrice(orderPrice); |
|
|
|
appletOrderItem.setOrderGiveProportion(percent); |
|
|
|
appletOrderItem.setOrderGivePrice(orderGivePrice); |
|
|
|
appletOrderItem.setAddress(appletOrder.getAddress()); |
|
|
|
appletOrderItem.setOrderSn(appletOrder.getOrderSn()); |
|
|
|
appletOrderItem.setOrderId(appletOrder.getOrderId()); |
|
|
|
appletOrderItem.setIsPet(1); |
|
|
|
appletOrderItem.setIsDate(1); |
|
|
|
appletOrderItem.setIsAddress(1); |
|
|
|
|
|
|
|
appletOrderItemService.insertAppletOrderItem(appletOrderItem); |
|
|
|
|
|
|
|
// 生成日订单数据 |
|
|
|
appletOrderDateFrequencyService.aceptOrdersGenerateDayOrdersByOrderVO(h5OrderVO, |
|
|
|
oldOrder.getAcceptAppUserId()); |
|
|
|
|
|
|
|
//TODO 短信通知 系统和接单的伴宠师 通知内容需要修改一下 |
|
|
|
AliyunSmsUtils.sendOrderUpdate(appUsers.getUserTelephone(), "修改订单", omsOrder.getId() + ""); |
|
|
|
|
|
|
|
AppletConfig appletConfig = appletConfigService.getByCode("admin_phone_list"); |
|
|
|
|
|
|
|
String adminPhoneList = appletConfig.getParamValueText(); |
|
|
|
if(StringUtils.isNotEmpty(adminPhoneList)){ |
|
|
|
for (String phone : adminPhoneList.split(",")) { |
|
|
|
AliyunSmsUtils.sendOrderUpdate(phone, "修改订单", omsOrder.getId() + ""); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}catch (Exception e){ |
|
|
|
log.error(e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void start() { |
|
|
|
run = true; |
|
|
|