fix: 定时任务解决订单未结束的需求

This commit is contained in:
huchuansai
2025-09-01 11:32:30 +08:00
parent a78ddd0ece
commit d91de22318
6 changed files with 215 additions and 141 deletions

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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;
/**

View File

@@ -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) {

View File

@@ -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