fix: 定时任务解决订单未结束的需求
This commit is contained in:
@@ -43,6 +43,10 @@ public class MyTenantLineHandler implements TenantLineHandler {
|
||||
*/
|
||||
@Override
|
||||
public boolean ignoreTable(String tableName) {
|
||||
String threadName = Thread.currentThread().getName();
|
||||
if (threadName.contains("schedule")) {
|
||||
return true;
|
||||
}
|
||||
String prefix = StringUtils.substringBefore(tableName, "_");
|
||||
return Arrays.asList(TABLE_FILTER).contains(tableName) || Arrays.asList(TABLE_PRE).contains(prefix);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
package com.starry.admin.modules.order.job;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.starry.admin.common.exception.CustomException;
|
||||
import com.starry.admin.modules.order.mapper.PlayOrderInfoMapper;
|
||||
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class OrderJob {
|
||||
@Resource
|
||||
private PlayOrderInfoMapper orderInfoMapper;
|
||||
@Resource
|
||||
private WxCustomMpService wxCustomMpService;
|
||||
|
||||
|
||||
/**
|
||||
* 每20秒执行一次的定时任务,修改订单状态为已完成
|
||||
*/
|
||||
@Scheduled(fixedRate = 20000, initialDelay = 20000)
|
||||
public void orderFinishJob() {
|
||||
// 查询出所有应该完成的订单
|
||||
List<String> serviceDurationList = Arrays.asList("一周", "一个月", "一小时", "15分钟", "一天", "半小时", "30分钟");
|
||||
List<PlayOrderInfoEntity> orderInfoEntityList = orderInfoMapper.selectList(Wrappers.lambdaQuery(PlayOrderInfoEntity.class).isNotNull(PlayOrderInfoEntity::getServiceDuration)
|
||||
.eq(PlayOrderInfoEntity::getOrderStatus, "2")
|
||||
.eq(PlayOrderInfoEntity::getOrderType, "2")
|
||||
.isNotNull(PlayOrderInfoEntity::getOrderStartTime)
|
||||
.in(PlayOrderInfoEntity::getServiceDuration, serviceDurationList)
|
||||
.in(PlayOrderInfoEntity::getPlaceType, Arrays.asList("1", "0"))
|
||||
);
|
||||
if (CollectionUtils.isEmpty(orderInfoEntityList)) return;
|
||||
|
||||
orderInfoEntityList.forEach(ca -> {
|
||||
try {
|
||||
// 根据serviceDuration换取时间
|
||||
Integer serviceDuration = this.getServiceDuration(ca.getServiceDuration());
|
||||
if (serviceDuration.equals(0)) return;
|
||||
|
||||
// 判断与开始时间相比较,如果大于服务时长,则修改订单状态为已完成
|
||||
if (ca.getOrderStartTime().plusMinutes(serviceDuration).isBefore(LocalDateTime.now())) {
|
||||
PlayOrderInfoEntity entity2 = new PlayOrderInfoEntity(ca.getId(), "3");
|
||||
entity2.setOrderEndTime(LocalDateTime.now());
|
||||
this.orderInfoMapper.updateById(entity2);
|
||||
// 发送消息
|
||||
wxCustomMpService.sendOrderFinishMessage(ca);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
log.error("订单完成失败:{}", ca.getOrderNo());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private Integer getServiceDuration(String serviceDuration) {
|
||||
if (StringUtils.isEmpty(serviceDuration)) {
|
||||
throw new CustomException("服务时长不能为空");
|
||||
}
|
||||
switch (serviceDuration) {
|
||||
case "一周":
|
||||
return 7 * 24 * 60; // 一周 = 7天,每天24小时,每小时60分钟
|
||||
|
||||
case "一个月":
|
||||
return 30 * 24 * 60; // 按30天计算一个月
|
||||
|
||||
case "一小时":
|
||||
return 60; // 一小时 = 60分钟
|
||||
|
||||
case "15分钟":
|
||||
return 15;
|
||||
case "一天":
|
||||
return 24 * 60; // 一天 = 24小时
|
||||
|
||||
case "半小时":
|
||||
return 30; // 半小时 = 30分钟
|
||||
|
||||
case "30分钟":
|
||||
return 30;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -61,7 +61,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
@Service
|
||||
public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, PlayOrderInfoEntity>
|
||||
implements
|
||||
IPlayOrderInfoService {
|
||||
IPlayOrderInfoService {
|
||||
@Resource
|
||||
private PlayOrderInfoMapper orderInfoMapper;
|
||||
@Resource
|
||||
@@ -100,10 +100,10 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
|
||||
@Override
|
||||
public void createOrderInfo(String orderId, String orderNo, String orderState, String orderType, String placeType,
|
||||
String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice,
|
||||
String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney,
|
||||
BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode,
|
||||
List<String> couponIds, String remark, String clerkSex, String clerkLevelId, String excludeHistory) {
|
||||
String rewardType, String firstOrder, String commodityId, String commodityType, BigDecimal commodityPrice,
|
||||
String serviceDuration, String commodityName, String commodityNumber, BigDecimal orderMoney,
|
||||
BigDecimal finalAmount, BigDecimal discountAmount, String purchaserBy, String acceptBy, String weiChatCode,
|
||||
List<String> couponIds, String remark, String clerkSex, String clerkLevelId, String excludeHistory) {
|
||||
PlayOrderInfoEntity entity = new PlayOrderInfoEntity();
|
||||
entity.setId(orderId);
|
||||
entity.setOrderNo(orderNo);
|
||||
@@ -160,11 +160,11 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
|
||||
@Override
|
||||
public ClerkEstimatedRevenueVo getClerkEstimatedRevenue(String clerkId, List<String> croupIds, String placeType,
|
||||
String firstOrder, BigDecimal finalAmount) {
|
||||
String firstOrder, BigDecimal finalAmount) {
|
||||
PlayClerkLevelInfoEntity entity = playClerkUserInfoService.queryLevelCommission(clerkId);
|
||||
ClerkEstimatedRevenueVo estimatedRevenueVo = new ClerkEstimatedRevenueVo();
|
||||
switch (placeType) {
|
||||
case "0" : {
|
||||
case "0": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
estimatedRevenueVo.setRevenueRatio(entity.getFirstRegularRatio());
|
||||
estimatedRevenueVo
|
||||
@@ -183,7 +183,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "1" : {
|
||||
case "1": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
estimatedRevenueVo.setRevenueRatio(entity.getFirstRandomRadio());
|
||||
estimatedRevenueVo
|
||||
@@ -202,7 +202,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "2" : {
|
||||
case "2": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
estimatedRevenueVo.setRevenueRatio(entity.getFirstRewardRatio());
|
||||
estimatedRevenueVo
|
||||
@@ -221,13 +221,13 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "-1" : {
|
||||
case "-1": {
|
||||
log.error("下单类型异常,placeType={}", placeType);
|
||||
estimatedRevenueVo.setRevenueAmount(finalAmount);
|
||||
estimatedRevenueVo.setRevenueRatio(100);
|
||||
break;
|
||||
}
|
||||
default : {
|
||||
default: {
|
||||
log.error("下单类型错误,placeType={}", placeType);
|
||||
estimatedRevenueVo.setRevenueAmount(finalAmount);
|
||||
estimatedRevenueVo.setRevenueRatio(100);
|
||||
@@ -256,14 +256,10 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 根据店员等级和订单金额,获取店员预计收入
|
||||
*
|
||||
* @param clerkId
|
||||
* 店员ID
|
||||
* @param placeType
|
||||
* 下单类型(-1:其他类型;0:指定单;1:随机单;2:打赏单)
|
||||
* @param firstOrder
|
||||
* 是否是首单【0:不是,1:是】
|
||||
* @param finalAmount
|
||||
* 订单支付金额
|
||||
* @param clerkId 店员ID
|
||||
* @param placeType 下单类型(-1:其他类型;0:指定单;1:随机单;2:打赏单)
|
||||
* @param firstOrder 是否是首单【0:不是,1:是】
|
||||
* @param finalAmount 订单支付金额
|
||||
* @return math.BigDecimal 店员预计收入
|
||||
* @author admin
|
||||
* @since 2024/6/3 11:12
|
||||
@@ -272,7 +268,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
public BigDecimal getEstimatedRevenue(String clerkId, String placeType, String firstOrder, BigDecimal finalAmount) {
|
||||
PlayClerkLevelInfoEntity entity = playClerkUserInfoService.queryLevelCommission(clerkId);
|
||||
switch (placeType) {
|
||||
case "0" : {
|
||||
case "0": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return finalAmount.multiply(new BigDecimal(entity.getFirstRegularRatio())
|
||||
.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
@@ -281,7 +277,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
case "1" : {
|
||||
case "1": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return finalAmount.multiply(new BigDecimal(entity.getFirstRandomRadio()).divide(new BigDecimal(100),
|
||||
4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
@@ -290,7 +286,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
case "2" : {
|
||||
case "2": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return finalAmount.multiply(new BigDecimal(entity.getFirstRewardRatio()).divide(new BigDecimal(100),
|
||||
4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
@@ -299,11 +295,11 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
}
|
||||
case "-1" : {
|
||||
case "-1": {
|
||||
log.error("下单类型异常,placeType={}", placeType);
|
||||
return finalAmount;
|
||||
}
|
||||
default : {
|
||||
default: {
|
||||
log.error("下单类型错误,placeType={}", placeType);
|
||||
return finalAmount;
|
||||
}
|
||||
@@ -314,32 +310,32 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
public Integer getEstimatedRevenueRatio(String clerkId, String placeType, String firstOrder) {
|
||||
PlayClerkLevelInfoEntity entity = playClerkUserInfoService.queryLevelCommission(clerkId);
|
||||
switch (placeType) {
|
||||
case "0" : {
|
||||
case "0": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return entity.getFirstRegularRatio();
|
||||
} else {
|
||||
return entity.getNotFirstRegularRatio();
|
||||
}
|
||||
}
|
||||
case "1" : {
|
||||
case "1": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return entity.getFirstRandomRadio();
|
||||
} else {
|
||||
return entity.getNotFirstRandomRadio();
|
||||
}
|
||||
}
|
||||
case "2" : {
|
||||
case "2": {
|
||||
if ("1".equals(firstOrder)) {
|
||||
return entity.getFirstRewardRatio();
|
||||
} else {
|
||||
return entity.getNotFirstRewardRatio();
|
||||
}
|
||||
}
|
||||
case "-1" : {
|
||||
case "-1": {
|
||||
log.error("下单类型异常,placeType={}", placeType);
|
||||
return 100;
|
||||
}
|
||||
default : {
|
||||
default: {
|
||||
log.error("下单类型错误,placeType={}", placeType);
|
||||
return 100;
|
||||
}
|
||||
@@ -349,14 +345,10 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 新增充值订单
|
||||
*
|
||||
* @param orderId
|
||||
* 订单编号
|
||||
* @param orderMoney
|
||||
* 订单金额
|
||||
* @param finalAmount
|
||||
* 订单最终金额(支付金额)
|
||||
* @param purchaserBy
|
||||
* 下单人ID
|
||||
* @param orderId 订单编号
|
||||
* @param orderMoney 订单金额
|
||||
* @param finalAmount 订单最终金额(支付金额)
|
||||
* @param purchaserBy 下单人ID
|
||||
*/
|
||||
|
||||
@Override
|
||||
@@ -407,7 +399,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
|
||||
@Override
|
||||
public List<PlayOrderInfoEntity> listByTime(String clerkId, String startTime, String endTime,
|
||||
List<String> orderStatus) {
|
||||
List<String> orderStatus) {
|
||||
MPJLambdaWrapper<PlayOrderInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||
if (StrUtil.isNotEmpty(clerkId)) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, clerkId);
|
||||
@@ -430,7 +422,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
.selectAs(PlayCustomUserInfoEntity::getNickname, "customNickname");
|
||||
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getPurchaserBy).leftJoin(PlayClerkUserInfoEntity.class,
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
// 查询陪聊表
|
||||
lambdaQueryWrapper.selectAs(PlayClerkUserInfoEntity::getId, "clerkId")
|
||||
.selectAs(PlayClerkUserInfoEntity::getAvatar, "clerkAvatar")
|
||||
@@ -488,7 +480,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
// 子表
|
||||
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getPurchaserBy).leftJoin(PlayClerkUserInfoEntity.class,
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
lambdaQueryWrapper.orderByDesc(PlayOrderInfoEntity::getPurchaserTime);
|
||||
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()),
|
||||
PlayRewardInfoReturnVo.class, lambdaQueryWrapper);
|
||||
@@ -497,8 +489,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 查询订单
|
||||
*
|
||||
* @param id
|
||||
* 订单主键
|
||||
* @param id 订单主键
|
||||
* @return 订单
|
||||
*/
|
||||
@Override
|
||||
@@ -526,7 +517,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
// 子表
|
||||
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getPurchaserBy).leftJoin(PlayClerkUserInfoEntity.class,
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, orderId);
|
||||
lambdaQueryWrapper.orderByDesc(PlayOrderInfoEntity::getPurchaserTime);
|
||||
return this.baseMapper.selectJoinOne(PlayOrderDetailsReturnVo.class, lambdaQueryWrapper);
|
||||
@@ -535,8 +526,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 分页查询订单信息
|
||||
*
|
||||
* @param vo
|
||||
* 订单分页查询对象
|
||||
* @param vo 订单分页查询对象
|
||||
* @return 订单分页查询结果
|
||||
*/
|
||||
@Override
|
||||
@@ -679,63 +669,13 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
return this.baseMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取通用的订单查询对象 订单作为主表 连接顾客用户表、店员用户表、商品表
|
||||
*
|
||||
* @return MPJLambdaWrapper<PlayOrderInfoEntity>
|
||||
*/
|
||||
public MPJLambdaWrapper<PlayOrderInfoEntity> getCommonOrderQueryVo(PlayOrderInfoEntity entity) {
|
||||
MPJLambdaWrapper<PlayOrderInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||
// 查询主表全部字段
|
||||
lambdaQueryWrapper.selectAll(PlayOrderInfoEntity.class);
|
||||
// 查询顾客表
|
||||
lambdaQueryWrapper.selectAs(PlayCustomUserInfoEntity::getId, "customId")
|
||||
.selectAs(PlayCustomUserInfoEntity::getAvatar, "customAvatar")
|
||||
.selectAs(PlayCustomUserInfoEntity::getNickname, "customNickname");
|
||||
// 查询陪聊表
|
||||
lambdaQueryWrapper.selectAs(PlayClerkUserInfoEntity::getId, "clerkId")
|
||||
.selectAs(PlayClerkUserInfoEntity::getAvatar, "clerkAvatar")
|
||||
.selectAs(PlayClerkUserInfoEntity::getNickname, "clerkNickname");
|
||||
// 子表-店员服务项目表
|
||||
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getPurchaserBy);
|
||||
// 子表-店员表
|
||||
lambdaQueryWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getAcceptBy);
|
||||
if (StringUtils.isNotBlank(entity.getId())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, entity.getId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getPurchaserBy())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPurchaserBy, entity.getPurchaserBy());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getAcceptBy())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, entity.getAcceptBy());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getOrderStatus())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getOrderStatus, entity.getOrderStatus());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getPlaceType())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPlaceType, entity.getPlaceType());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getOrderType())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getOrderType, entity.getOrderType());
|
||||
}
|
||||
lambdaQueryWrapper.orderByDesc(PlayOrderInfoEntity::getCreatedTime);
|
||||
return lambdaQueryWrapper;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单状态为接单 只有管理员或者店员本人才能操作
|
||||
*
|
||||
* @param operatorByType
|
||||
* 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy
|
||||
* 操作人ID
|
||||
* @param acceptBy
|
||||
* 接单人ID
|
||||
* @param orderId
|
||||
* 订单Id
|
||||
* @param operatorByType 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy 操作人ID
|
||||
* @param acceptBy 接单人ID
|
||||
* @param orderId 订单Id
|
||||
**/
|
||||
@Override
|
||||
public void updateStateTo1(String operatorByType, String operatorBy, String acceptBy, String orderId) {
|
||||
@@ -776,17 +716,60 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
wxCustomMpService.sendOrderMessage(orderInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取通用的订单查询对象 订单作为主表 连接顾客用户表、店员用户表、商品表
|
||||
*
|
||||
* @return MPJLambdaWrapper<PlayOrderInfoEntity>
|
||||
*/
|
||||
public MPJLambdaWrapper<PlayOrderInfoEntity> getCommonOrderQueryVo(PlayOrderInfoEntity entity) {
|
||||
MPJLambdaWrapper<PlayOrderInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||
// 查询主表全部字段
|
||||
lambdaQueryWrapper.selectAll(PlayOrderInfoEntity.class);
|
||||
// 查询顾客表
|
||||
lambdaQueryWrapper.selectAs(PlayCustomUserInfoEntity::getId, "customId")
|
||||
.selectAs(PlayCustomUserInfoEntity::getAvatar, "customAvatar")
|
||||
.selectAs(PlayCustomUserInfoEntity::getNickname, "customNickname");
|
||||
// 查询陪聊表
|
||||
lambdaQueryWrapper.selectAs(PlayClerkUserInfoEntity::getId, "clerkId")
|
||||
.selectAs(PlayClerkUserInfoEntity::getAvatar, "clerkAvatar")
|
||||
.selectAs(PlayClerkUserInfoEntity::getNickname, "clerkNickname");
|
||||
// 子表-店员服务项目表
|
||||
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getPurchaserBy);
|
||||
// 子表-店员表
|
||||
lambdaQueryWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId,
|
||||
PlayOrderInfoEntity::getAcceptBy);
|
||||
if (StringUtils.isNotBlank(entity.getId())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, entity.getId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getPurchaserBy())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPurchaserBy, entity.getPurchaserBy());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getAcceptBy())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, entity.getAcceptBy());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getOrderStatus())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getOrderStatus, entity.getOrderStatus());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getPlaceType())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPlaceType, entity.getPlaceType());
|
||||
}
|
||||
if (StringUtils.isNotBlank(entity.getOrderType())) {
|
||||
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getOrderType, entity.getOrderType());
|
||||
}
|
||||
lambdaQueryWrapper.like(StringUtils.isNotEmpty(entity.getOrderNo()), PlayOrderInfoEntity::getOrderNo, entity.getOrderNo());
|
||||
lambdaQueryWrapper.orderByDesc(PlayOrderInfoEntity::getCreatedTime);
|
||||
return lambdaQueryWrapper;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单状态为开始订单或者完成订单 只有管理员或者店员本人才能操作
|
||||
*
|
||||
* @param operatorByType
|
||||
* 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy
|
||||
* 操作人ID
|
||||
* @param orderState
|
||||
* 订单状态
|
||||
* @param orderId
|
||||
* 订单Id
|
||||
* @param operatorByType 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy 操作人ID
|
||||
* @param orderState 订单状态
|
||||
* @param orderId 订单Id
|
||||
**/
|
||||
@Override
|
||||
public void updateStateTo23(String operatorByType, String operatorBy, String orderState, String orderId) {
|
||||
@@ -808,7 +791,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
throw new CustomException("只能操作本人订单");
|
||||
}
|
||||
switch (orderState) {
|
||||
case ORDER_STATUS_2 : {
|
||||
case ORDER_STATUS_2: {
|
||||
// 开始订单前,订单状态必须为接单状态
|
||||
if (!entity.getOrderStatus().equals(OrderConstant.ORDER_STATUS_1)) {
|
||||
log.error("订单状态异常,不能开始接单,orderId={},orderStace={}", orderId, orderState);
|
||||
@@ -819,7 +802,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
this.baseMapper.updateById(entity2);
|
||||
break;
|
||||
}
|
||||
case ORDER_STATUS_3 : {
|
||||
case ORDER_STATUS_3: {
|
||||
// 完成订单前,订单状态必须为开始状态
|
||||
if (!entity.getOrderStatus().equals(ORDER_STATUS_2)) {
|
||||
log.error("订单状态异常,不能完成订单,orderId={},orderStace={}", orderId, orderState);
|
||||
@@ -833,7 +816,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
wxCustomMpService.sendOrderFinishMessage(this.selectOrderInfoById(orderId));
|
||||
break;
|
||||
}
|
||||
default : {
|
||||
default: {
|
||||
log.error("修改订单状态异常,orderId={},orderStace={}", orderId, orderState);
|
||||
}
|
||||
}
|
||||
@@ -842,18 +825,15 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 修改订单状态为取消订单 管理员、店员、顾客均可操作
|
||||
*
|
||||
* @param operatorByType
|
||||
* 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy
|
||||
* 操作人ID
|
||||
* @param orderId
|
||||
* 订单Id
|
||||
* @param operatorByType 操作人类型(0:顾客;1:店员;2:管理员)
|
||||
* @param operatorBy 操作人ID
|
||||
* @param orderId 订单Id
|
||||
**/
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateStateTo4(String operatorByType, String operatorBy, String orderId, String refundReason,
|
||||
List<String> images) {
|
||||
List<String> images) {
|
||||
PlayOrderInfoEntity orderInfo = this.selectOrderInfoById(orderId);
|
||||
if ("0".equals(operatorByType) && !operatorBy.equals(orderInfo.getPurchaserBy())) {
|
||||
throw new CustomException("只能操作本人订单");
|
||||
@@ -890,8 +870,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 修改订单
|
||||
*
|
||||
* @param orderInfo
|
||||
* 订单
|
||||
* @param orderInfo 订单
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@@ -902,8 +881,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 批量删除订单
|
||||
*
|
||||
* @param ids
|
||||
* 需要删除的订单主键
|
||||
* @param ids 需要删除的订单主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@@ -914,8 +892,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
||||
/**
|
||||
* 删除订单信息
|
||||
*
|
||||
* @param id
|
||||
* 订单主键
|
||||
* @param id 订单主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package com.starry.admin.modules.weichat.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -110,7 +110,7 @@ public class WxCustomMpService {
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(order.getPurchaserBy());
|
||||
SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(order.getTenantId());
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getChongzhichenggongTemplateId(),
|
||||
customUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".julyharbor.com/user/");
|
||||
customUserInfo.getOpenid(), "https://" + tenant.getTenantKey() + ".julyharbor.com/user/");
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("time4", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
|
||||
data.add(new WxMpTemplateData("amount2", order.getOrderMoney().toString()));
|
||||
@@ -141,7 +141,7 @@ public class WxCustomMpService {
|
||||
|
||||
SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(tenantId);
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getXindingdanshoulitongzhiTemplateId(),
|
||||
openId, "http://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/");
|
||||
openId, "https://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/");
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("time6", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
|
||||
data.add(new WxMpTemplateData("character_string9", orderNo));
|
||||
@@ -171,7 +171,7 @@ public class WxCustomMpService {
|
||||
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getJiedanchenggongtongzhiTemplateId(),
|
||||
clerkUserInfo.getOpenid(),
|
||||
"http://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/" + orderInfo.getId());
|
||||
"https://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/" + orderInfo.getId());
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("character_string1", orderInfo.getOrderNo()));
|
||||
data.add(new WxMpTemplateData("time2", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
|
||||
@@ -184,7 +184,7 @@ public class WxCustomMpService {
|
||||
|
||||
templateMessage.setToUser(customUserInfo.getOpenid());
|
||||
templateMessage
|
||||
.setUrl("http://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + orderInfo.getId());
|
||||
.setUrl("https://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + orderInfo.getId());
|
||||
try {
|
||||
proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage);
|
||||
} catch (WxErrorException e) {
|
||||
@@ -200,7 +200,7 @@ public class WxCustomMpService {
|
||||
SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(userInfo.getTenantId());
|
||||
String template_id = tenant.getRzsqshtxTemplateId();
|
||||
String tenantKey = tenant.getTenantKey();
|
||||
String url = "http://" + tenantKey + ".julyharbor.com/clerk/";
|
||||
String url = "https://" + tenantKey + ".julyharbor.com/clerk/";
|
||||
|
||||
WxMpTemplateMessage templateMessage = new WxMpTemplateMessage();
|
||||
templateMessage.setTemplateId(template_id);
|
||||
@@ -225,7 +225,7 @@ public class WxCustomMpService {
|
||||
SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(tenantId);
|
||||
String template_id = tenant.getRzsqAdminTemplateId();
|
||||
String tenantKey = tenant.getTenantKey();
|
||||
String url = "http://" + tenantKey + ".julyharbor.com/clerk/#/admin/clerk-apply-list";
|
||||
String url = "https://" + tenantKey + ".julyharbor.com/clerk/#/admin/clerk-apply-list";
|
||||
List<PlayPersonnelAdminInfoEntity> adminInfoEntityList = playPersonnelAdminInfoService.list(Wrappers
|
||||
.lambdaQuery(PlayPersonnelAdminInfoEntity.class).select(PlayPersonnelAdminInfoEntity::getSysUserId));
|
||||
for (PlayPersonnelAdminInfoEntity adminInfoEntity : adminInfoEntityList) {
|
||||
@@ -289,7 +289,7 @@ public class WxCustomMpService {
|
||||
}
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getDingdantousuchuliTemplateId(),
|
||||
clerkUserInfo.getOpenid(),
|
||||
"http://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/admin/order/complain-list");
|
||||
"https://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/admin/order/complain-list");
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("character_string", orderInfo.getOrderNo()));
|
||||
data.add(new WxMpTemplateData("time2", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
|
||||
@@ -309,7 +309,7 @@ public class WxCustomMpService {
|
||||
PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(order.getPurchaserBy());
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getDingdanwanchengtongzhiTemplateId(),
|
||||
customUserInfo.getOpenid(),
|
||||
"http://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + order.getId());
|
||||
"https://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + order.getId());
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("time18", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")));
|
||||
data.add(new WxMpTemplateData("character_string8", order.getOrderNo()));
|
||||
@@ -331,7 +331,7 @@ public class WxCustomMpService {
|
||||
|
||||
WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getQuxiaodingdantongzhiTemplateId(),
|
||||
customUserInfo.getOpenid(),
|
||||
"http://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + orderInfo.getId());
|
||||
"https://" + tenant.getTenantKey() + ".julyharbor.com/user/#/orderDetail/" + orderInfo.getId());
|
||||
List<WxMpTemplateData> data = new ArrayList<>();
|
||||
data.add(new WxMpTemplateData("character_string2", orderInfo.getOrderNo()));
|
||||
data.add(new WxMpTemplateData("thing5", StringUtils.isEmpty(refundReason) ? "已取消" : refundReason));
|
||||
@@ -348,7 +348,7 @@ public class WxCustomMpService {
|
||||
|
||||
templateMessage.setToUser(clerkUserInfo.getOpenid());
|
||||
templateMessage.setUrl(
|
||||
"http://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/" + orderInfo.getId());
|
||||
"https://" + tenant.getTenantKey() + ".julyharbor.com/clerk/#/orderDetail/" + orderInfo.getId());
|
||||
try {
|
||||
proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage);
|
||||
} catch (WxErrorException e) {
|
||||
|
||||
@@ -4,17 +4,16 @@ import cn.hutool.core.util.RandomUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.starry.common.redis.RedisCache;
|
||||
import com.starry.common.utils.StringUtils;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @Author: huchuansai
|
||||
* @Date: 2024/7/29 5:41 PM
|
||||
|
||||
Reference in New Issue
Block a user