1、优化配送派单消息推送功能
2、优化送水订单配送状态、水票标识查询,回显品名、水票标识、订单状态业务 3、优化送水订单接单、送达业务 4、优化资金表、资金流水表资金变更同步业务
This commit is contained in:
@@ -80,7 +80,7 @@ public class MybatisPlusConfig {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean ignoreTable(String tableName) {
|
public boolean ignoreTable(String tableName) {
|
||||||
TenantContext.setIgnoreTenant(Boolean.TRUE);
|
// TenantContext.setIgnoreTenant(Boolean.TRUE);
|
||||||
// 如果当前上下文设置了忽略租户隔离,则忽略所有表的租户隔离
|
// 如果当前上下文设置了忽略租户隔离,则忽略所有表的租户隔离
|
||||||
if (TenantContext.isIgnoreTenant()) {
|
if (TenantContext.isIgnoreTenant()) {
|
||||||
return true;
|
return true;
|
||||||
@@ -93,17 +93,8 @@ public class MybatisPlusConfig {
|
|||||||
"sys_dictionary_data",
|
"sys_dictionary_data",
|
||||||
"apps_test_data",
|
"apps_test_data",
|
||||||
"cms_lang",
|
"cms_lang",
|
||||||
// "hjm_car",
|
|
||||||
// "hjm_fence"
|
|
||||||
// "cms_website"
|
|
||||||
// "sys_user"
|
|
||||||
// "cms_domain"
|
|
||||||
// "shop_order_goods",
|
|
||||||
"shop_goods",
|
"shop_goods",
|
||||||
// "shop_users",
|
"shop_order" ,
|
||||||
"shop_order" , // 移除shop_order,改为通过注解控制
|
|
||||||
// "shop_order_info",
|
|
||||||
// "booking_user_invoice"
|
|
||||||
"shop_order_goods",
|
"shop_order_goods",
|
||||||
"glt_ticket_template",
|
"glt_ticket_template",
|
||||||
"glt_user_ticket",
|
"glt_user_ticket",
|
||||||
@@ -111,7 +102,8 @@ public class MybatisPlusConfig {
|
|||||||
"glt_user_ticket_log",
|
"glt_user_ticket_log",
|
||||||
"shop_dealer_user",
|
"shop_dealer_user",
|
||||||
"shop_dealer_order",
|
"shop_dealer_order",
|
||||||
"shop_dealer_referee"
|
"shop_dealer_referee",
|
||||||
|
"shop_store_rider"
|
||||||
).contains(tableName);
|
).contains(tableName);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -299,6 +299,13 @@ public class GltTicketOrderController extends BaseController {
|
|||||||
return success("确认送达");
|
return success("确认送达");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "订单调度")
|
||||||
|
@PostMapping("/dispatchOrder")
|
||||||
|
public ApiResult<?> dispatchOrder(@RequestParam("orderNo") String orderNo, @RequestParam("tenantId") Integer tenantId) {
|
||||||
|
gltTicketOrderService.dispatchOrder(orderNo, tenantId);
|
||||||
|
return success("success!");
|
||||||
|
}
|
||||||
|
|
||||||
@PreAuthorize("isAuthenticated()")
|
@PreAuthorize("isAuthenticated()")
|
||||||
@Operation(summary = "用户确认收货")
|
@Operation(summary = "用户确认收货")
|
||||||
@PostMapping("/{id}/confirm-receive")
|
@PostMapping("/{id}/confirm-receive")
|
||||||
@@ -382,23 +389,14 @@ public class GltTicketOrderController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gltTicketOrderService.updateById(gltTicketOrder)) {
|
if (gltTicketOrderService.updateById(gltTicketOrder)) {
|
||||||
// 后台指派配送员(直接改 riderId)时,同步商城订单为“已发货”(deliveryStatus=20)
|
gltTicketOrderService.markShopOrderShippedAfterRiderAssigned(gltTicketOrder.getId(), tenantId, gltTicketOrder.getRiderId());
|
||||||
if (gltTicketOrder != null
|
|
||||||
&& gltTicketOrder.getId() != null
|
|
||||||
&& gltTicketOrder.getRiderId() != null
|
|
||||||
&& gltTicketOrder.getRiderId() > 0) {
|
|
||||||
gltTicketOrderService.markShopOrderShippedAfterRiderAssigned(
|
|
||||||
gltTicketOrder.getId(),
|
|
||||||
tenantId,
|
|
||||||
gltTicketOrder.getRiderId()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// 后台直接改“已完成”(deliveryStatus=40)时,同步商城订单为“已完成”(orderStatus=1)
|
// 后台直接改“已完成”(deliveryStatus=40)时,同步商城订单为“已完成”(orderStatus=1)
|
||||||
if (gltTicketOrder != null
|
if (gltTicketOrder != null
|
||||||
&& gltTicketOrder.getId() != null
|
&& gltTicketOrder.getId() != null
|
||||||
&& gltTicketOrder.getDeliveryStatus() != null
|
&& gltTicketOrder.getDeliveryStatus() != null
|
||||||
&& gltTicketOrder.getDeliveryStatus() == GltTicketOrderService.DELIVERY_STATUS_FINISHED) {
|
&& gltTicketOrder.getDeliveryStatus() == GltTicketOrderService.DELIVERY_STATUS_FINISHED) {
|
||||||
gltTicketOrderService.markShopOrderCompletedAfterTicketFinished(gltTicketOrder.getId(), tenantId);
|
gltTicketOrderService.markShopOrderCompletedAfterTicketFinished(gltTicketOrder.getId());
|
||||||
}
|
}
|
||||||
return success("修改成功");
|
return success("修改成功");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ public class GltTicketOrder implements Serializable {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String storeName;
|
private String storeName;
|
||||||
|
|
||||||
|
@Schema(description = "品名")
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String goodsName;
|
||||||
|
|
||||||
@Schema(description = "门店地址")
|
@Schema(description = "门店地址")
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String storeAddress;
|
private String storeAddress;
|
||||||
@@ -213,6 +217,9 @@ public class GltTicketOrder implements Serializable {
|
|||||||
@Schema(description = "状态, 0正常, 1冻结")
|
@Schema(description = "状态, 0正常, 1冻结")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "水票标识 0-非 1-是")
|
||||||
|
private Integer waterTicketFlag;
|
||||||
|
|
||||||
@Schema(description = "是否删除, 0否, 1是")
|
@Schema(description = "是否删除, 0否, 1是")
|
||||||
@TableLogic
|
@TableLogic
|
||||||
private Integer deleted;
|
private Integer deleted;
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
LEFT JOIN shop_user_address d ON a.address_id = d.id
|
LEFT JOIN shop_user_address d ON a.address_id = d.id
|
||||||
LEFT JOIN glt_user_ticket f ON a.user_ticket_id = f.id
|
LEFT JOIN glt_user_ticket f ON a.user_ticket_id = f.id
|
||||||
LEFT JOIN shop_order o ON f.order_id = o.order_id AND f.tenant_id = o.tenant_id AND o.deleted = 0
|
LEFT JOIN shop_order o ON f.order_id = o.order_id AND f.tenant_id = o.tenant_id AND o.deleted = 0
|
||||||
|
|
||||||
<where>
|
<where>
|
||||||
<if test="param.id != null">
|
<if test="param.id != null">
|
||||||
AND a.id = #{param.id}
|
AND a.id = #{param.id}
|
||||||
@@ -103,6 +102,12 @@
|
|||||||
OR u.phone LIKE CONCAT('%', #{param.keywords}, '%')
|
OR u.phone LIKE CONCAT('%', #{param.keywords}, '%')
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
|
<if test="param.waterTicketFlag != null">
|
||||||
|
AND a.water_ticket_flag = #{param.waterTicketFlag}
|
||||||
|
</if>
|
||||||
|
<if test="param.deliveryStatus != null and param.deliveryStatus == 10">
|
||||||
|
AND o.order_status in (0, 1, 5)
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
|
|||||||
@@ -94,4 +94,7 @@ public class GltTicketOrderParam extends BaseParam {
|
|||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Integer orderStatus;
|
private Integer orderStatus;
|
||||||
|
|
||||||
|
@Schema(description = "水票订单标识 0-否 1-是")
|
||||||
|
private Integer waterTicketFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public interface GltTicketOrderService extends IService<GltTicketOrder> {
|
|||||||
*
|
*
|
||||||
* <p>用于后台直接改 deliveryStatus=40 等不经过 confirmReceive/autoConfirmTimeout 的兜底同步。</p>
|
* <p>用于后台直接改 deliveryStatus=40 等不经过 confirmReceive/autoConfirmTimeout 的兜底同步。</p>
|
||||||
*/
|
*/
|
||||||
void markShopOrderCompletedAfterTicketFinished(Integer ticketOrderId, Integer tenantId);
|
void markShopOrderCompletedAfterTicketFinished(Integer id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配送员开始配送:10 -> 20,并写 sendStartTime。
|
* 配送员开始配送:10 -> 20,并写 sendStartTime。
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.http.HttpUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.gxwebsoft.common.core.exception.BusinessException;
|
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||||
|
import com.gxwebsoft.common.core.utils.DateTimeUtil;
|
||||||
import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto;
|
import com.gxwebsoft.glt.dto.NoticeRiderNewOrderDto;
|
||||||
import com.gxwebsoft.glt.entity.GltTicketOrder;
|
import com.gxwebsoft.glt.entity.GltTicketOrder;
|
||||||
import com.gxwebsoft.glt.service.GltSubscribeMessageService;
|
import com.gxwebsoft.glt.service.GltSubscribeMessageService;
|
||||||
@@ -64,7 +65,7 @@ public class GltSubscribeMessageServiceImpl implements GltSubscribeMessageServic
|
|||||||
data.put("character_string1", Map.of("value", String.valueOf(entity.getOrderNo())));
|
data.put("character_string1", Map.of("value", String.valueOf(entity.getOrderNo())));
|
||||||
data.put("thing22", Map.of("value", String.valueOf(entity.getGoodsName())));
|
data.put("thing22", Map.of("value", String.valueOf(entity.getGoodsName())));
|
||||||
data.put("number20", Map.of("value", String.valueOf(entity.getProductCount())));
|
data.put("number20", Map.of("value", String.valueOf(entity.getProductCount())));
|
||||||
data.put("time24", Map.of("value", String.valueOf(entity.getCreateTime())));
|
data.put("time24", Map.of("value", DateTimeUtil.formatDateTime(entity.getCreateTime(), "yyyy-MM-dd HH:mm:ss")));
|
||||||
|
|
||||||
//推送订阅消息
|
//推送订阅消息
|
||||||
sendSubscribeMessage(accessToken, entity.getOpenId(), data);
|
sendSubscribeMessage(accessToken, entity.getOpenId(), data);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import com.gxwebsoft.shop.service.ShopDealerCapitalService;
|
|||||||
import com.gxwebsoft.shop.service.ShopDealerUserService;
|
import com.gxwebsoft.shop.service.ShopDealerUserService;
|
||||||
import com.gxwebsoft.shop.service.ShopOrderGoodsService;
|
import com.gxwebsoft.shop.service.ShopOrderGoodsService;
|
||||||
import com.gxwebsoft.shop.service.ShopOrderService;
|
import com.gxwebsoft.shop.service.ShopOrderService;
|
||||||
|
import com.gxwebsoft.shop.vo.ShopOrderGoodsInfoVO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -49,6 +50,7 @@ import java.math.RoundingMode;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
@@ -122,15 +124,28 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
List<GltTicketOrder> list = baseMapper.selectPageRel(page, param);
|
List<GltTicketOrder> list = baseMapper.selectPageRel(page, param);
|
||||||
if(CollectionUtils.isNotEmpty(list)){
|
if(CollectionUtils.isNotEmpty(list)){
|
||||||
List<Integer> addressIdList = list.stream().map(GltTicketOrder::getAddressId).distinct().collect(Collectors.toList());
|
List<Integer> addressIdList = list.stream().map(GltTicketOrder::getAddressId).distinct().collect(Collectors.toList());
|
||||||
List<ShopUserAddress> userAddressList = shopUserAddressMapper.selectBatchIds(addressIdList);
|
List<String> orderNoList = list.stream().filter(gltTicketOrder -> StrUtil.isNotBlank(gltTicketOrder.getOrderNo())).map(GltTicketOrder::getOrderNo).distinct().collect(Collectors.toList());
|
||||||
if(CollectionUtils.isNotEmpty(userAddressList)){
|
List<ShopOrderGoodsInfoVO> orderGoodsInfoVOList = new ArrayList<>();
|
||||||
list.forEach(ticketOrder ->{
|
if(CollectionUtils.isNotEmpty(orderNoList)){
|
||||||
ShopUserAddress shopUserAddress = userAddressList.stream().filter(address -> ticketOrder.getAddressId().equals(address.getId())).findFirst().orElse(null);
|
orderGoodsInfoVOList = shopOrderService.getOrderGoodsInfoByOrderNos(orderNoList);
|
||||||
if(shopUserAddress != null){
|
|
||||||
ticketOrder.setFullAddress(shopUserAddress.getFullAddress());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<ShopUserAddress> userAddressList = shopUserAddressMapper.selectBatchIds(addressIdList);
|
||||||
|
List<ShopOrderGoodsInfoVO> finalOrderGoodsInfoVOList = orderGoodsInfoVOList;
|
||||||
|
list.forEach(ticketOrder ->{
|
||||||
|
ShopUserAddress shopUserAddress = userAddressList.stream().filter(address -> ticketOrder.getAddressId().equals(address.getId())).findFirst().orElse(null);
|
||||||
|
if(shopUserAddress != null){
|
||||||
|
ticketOrder.setFullAddress(shopUserAddress.getFullAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(StrUtil.isNotBlank(ticketOrder.getOrderNo())){
|
||||||
|
ShopOrderGoodsInfoVO shopOrderGoodsInfoVO = finalOrderGoodsInfoVOList.stream().filter(orderGoodsInfoVO -> ticketOrder.getOrderNo().equals(orderGoodsInfoVO.getOrderNo())).findFirst().orElse(null);
|
||||||
|
if(shopOrderGoodsInfoVO != null){
|
||||||
|
ticketOrder.setGoodsName(shopOrderGoodsInfoVO.getGoodsName());
|
||||||
|
ticketOrder.setOrderStatus(shopOrderGoodsInfoVO.getOrderStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return new PageResult<>(list, page.getTotal());
|
return new PageResult<>(list, page.getTotal());
|
||||||
}
|
}
|
||||||
@@ -349,7 +364,7 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
.update();
|
.update();
|
||||||
if (ok) {
|
if (ok) {
|
||||||
// 接单成功后,同步商城订单发货状态:10未发货 -> 20已发货
|
// 接单成功后,同步商城订单发货状态:10未发货 -> 20已发货
|
||||||
updateShopOrderDeliveryStatusAfterAccept(id, tenantId, riderId, now);
|
updateShopOrderDeliveryStatusAfterAcceptV2(id, tenantId, riderId, now);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -391,12 +406,12 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId) {
|
public void markShopOrderShippedAfterRiderAssigned(Integer ticketOrderId, Integer tenantId, Integer riderId) {
|
||||||
updateShopOrderDeliveryStatusAfterAccept(ticketOrderId, tenantId, riderId, LocalDateTime.now());
|
updateShopOrderDeliveryStatusAfterAcceptV2(ticketOrderId, tenantId, riderId, LocalDateTime.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void markShopOrderCompletedAfterTicketFinished(Integer ticketOrderId, Integer tenantId) {
|
public void markShopOrderCompletedAfterTicketFinished(Integer id) {
|
||||||
updateShopOrderOrderStatusAfterTicketFinished(ticketOrderId, tenantId, LocalDateTime.now());
|
updateShopOrderOrderStatusAfterTicketFinishedV2(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateShopOrderDeliveryStatusAfterAccept(Integer ticketOrderId, Integer tenantId, Integer riderId, LocalDateTime now) {
|
private void updateShopOrderDeliveryStatusAfterAccept(Integer ticketOrderId, Integer tenantId, Integer riderId, LocalDateTime now) {
|
||||||
@@ -466,22 +481,6 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
shopOrderNo = order.getOrderNo();
|
shopOrderNo = order.getOrderNo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LambdaUpdateWrapper<GltUserTicket> backfill = new LambdaUpdateWrapper<GltUserTicket>()
|
|
||||||
.eq(GltUserTicket::getTenantId, tenantId)
|
|
||||||
.eq(GltUserTicket::getDeleted, 0)
|
|
||||||
.eq(GltUserTicket::getId, userTicket.getId());
|
|
||||||
backfill.set(GltUserTicket::getOrderId, shopOrderId);
|
|
||||||
if (!StringUtils.hasText(userTicket.getOrderNo()) && StringUtils.hasText(shopOrderNo)) {
|
|
||||||
backfill.set(GltUserTicket::getOrderNo, shopOrderNo);
|
|
||||||
}
|
|
||||||
backfill.set(GltUserTicket::getUpdateTime, now);
|
|
||||||
try {
|
|
||||||
gltUserTicketService.update(backfill);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.debug("回填水票关联商城订单信息失败(不影响主流程) - tenantId={}, userTicketId={}, orderId={}, orderNo={}",
|
|
||||||
tenantId, userTicket.getId(), shopOrderId, shopOrderNo, e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LambdaUpdateWrapper<ShopOrder> uw = new LambdaUpdateWrapper<ShopOrder>()
|
LambdaUpdateWrapper<ShopOrder> uw = new LambdaUpdateWrapper<ShopOrder>()
|
||||||
@@ -529,6 +528,20 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateShopOrderDeliveryStatusAfterAcceptV2(Integer ticketOrderId, Integer tenantId, Integer riderId, LocalDateTime now) {
|
||||||
|
GltTicketOrder gltTicketOrder = baseMapper.selectById(ticketOrderId);
|
||||||
|
if(gltTicketOrder != null && StrUtil.isNotBlank(gltTicketOrder.getOrderNo())){
|
||||||
|
String orderNo = gltTicketOrder.getOrderNo();
|
||||||
|
|
||||||
|
ShopOrder shopOrder = shopOrderService.getByOrderNo(orderNo, tenantId);
|
||||||
|
if(shopOrder != null && shopOrder.getOrderStatus() == 0){
|
||||||
|
shopOrder.setDeliveryStatus(20);
|
||||||
|
shopOrder.setUpdateTime(now);
|
||||||
|
shopOrderService.updateById(shopOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Integer id, Integer riderId, Integer tenantId) {
|
public void start(Integer id, Integer riderId, Integer tenantId) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
@@ -1018,6 +1031,104 @@ public class GltTicketOrderServiceImpl extends ServiceImpl<GltTicketOrderMapper,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新送水订单为已完成状态
|
||||||
|
* @param id 送水订单ID
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public void updateShopOrderOrderStatusAfterTicketFinishedV2(Integer id) {
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
if(id == null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//1.找到关联水票的商城订单
|
||||||
|
GltTicketOrder ticketOrder = baseMapper.selectById(id);
|
||||||
|
if (ticketOrder == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShopOrder order = shopOrderService.getByOrderNo(ticketOrder.getOrderNo(), ticketOrder.getTenantId());
|
||||||
|
//2.配送提成(每桶0.1)
|
||||||
|
int qty = ticketOrder.getTotalNum() == null ? 0 : ticketOrder.getTotalNum();
|
||||||
|
if (qty > 0) {
|
||||||
|
BigDecimal money = RIDER_UNIT_COMMISSION
|
||||||
|
.multiply(BigDecimal.valueOf(qty))
|
||||||
|
.setScale(RIDER_COMMISSION_SCALE, RoundingMode.HALF_UP);
|
||||||
|
if (money.signum() > 0) {
|
||||||
|
ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto();
|
||||||
|
reduceDto.setTypeEnum(ShopDealerTypeEnum.WITHDRAW_ACCOUNT);
|
||||||
|
reduceDto.setUserId(ticketOrder.getRiderId());
|
||||||
|
reduceDto.setOrderUserId(ticketOrder.getUserId());
|
||||||
|
if(Arrays.asList(1, 3).contains(order.getOrderType())){
|
||||||
|
reduceDto.setOrderNo(order.getOrderNo());
|
||||||
|
}else {
|
||||||
|
reduceDto.setOrderNo(ticketOrder.getNo());
|
||||||
|
}
|
||||||
|
reduceDto.setPrice(money);
|
||||||
|
reduceDto.setUpdateEnum(ShopDealerCapitalUpdateEnum.DELIVERY_INCOME);
|
||||||
|
shopDealerUserService.reduceBalance(reduceDto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//3.配送奖励(按商品设置)
|
||||||
|
Integer goodsId = order.getFormId();
|
||||||
|
ShopGoods shopGood = shopGoodsMapper.selectById(goodsId);
|
||||||
|
if(shopGood != null && order != null){
|
||||||
|
Integer commissionType = shopGood.getCommissionType();
|
||||||
|
BigDecimal money = BigDecimal.ZERO;
|
||||||
|
if(commissionType == 10){ //按金额
|
||||||
|
money = shopGood.getDeliveryMoney();
|
||||||
|
}else { //按比率
|
||||||
|
money = order.getPayPrice().multiply(shopGood.getDeliveryMoney()).divide(BigDecimal.valueOf(100), 3, RoundingMode.HALF_UP);
|
||||||
|
}
|
||||||
|
if(money.compareTo(BigDecimal.ZERO) > 0){
|
||||||
|
ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto();
|
||||||
|
reduceDto.setTypeEnum(ShopDealerTypeEnum.WITHDRAW_ACCOUNT);
|
||||||
|
reduceDto.setUserId(ticketOrder.getRiderId());
|
||||||
|
reduceDto.setOrderUserId(ticketOrder.getUserId());
|
||||||
|
if(Arrays.asList(1, 3).contains(order.getOrderType())){
|
||||||
|
reduceDto.setOrderNo(order.getOrderNo());
|
||||||
|
}else {
|
||||||
|
reduceDto.setOrderNo(ticketOrder.getNo());
|
||||||
|
}
|
||||||
|
reduceDto.setPrice(money);
|
||||||
|
reduceDto.setUpdateEnum(ShopDealerCapitalUpdateEnum.DELIVERY_REWARD);
|
||||||
|
shopDealerUserService.reduceBalance(reduceDto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//4.配送费结算
|
||||||
|
if(Arrays.asList(1, 3).contains(order.getOrderType()) && order.getDeliveryFee().compareTo(BigDecimal.ZERO) > 0){
|
||||||
|
ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto();
|
||||||
|
reduceDto.setTypeEnum(ShopDealerTypeEnum.WITHDRAW_ACCOUNT);
|
||||||
|
reduceDto.setUserId(ticketOrder.getRiderId());
|
||||||
|
reduceDto.setOrderUserId(ticketOrder.getUserId());
|
||||||
|
reduceDto.setOrderNo(order.getOrderNo());
|
||||||
|
reduceDto.setPrice(order.getDeliveryFee());
|
||||||
|
reduceDto.setUpdateEnum(ShopDealerCapitalUpdateEnum.DELIVERY_FLOOR_FEE);
|
||||||
|
shopDealerUserService.reduceBalance(reduceDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
//5.查询未完成订单,完成资金解冻
|
||||||
|
if(order != null && order.getOrderStatus() == 0){
|
||||||
|
ShopDealerUserReduceDto reduceDto = new ShopDealerUserReduceDto();
|
||||||
|
reduceDto.setTypeEnum(ShopDealerTypeEnum.DEFROST);
|
||||||
|
reduceDto.setOrderUserId(order.getUserId());
|
||||||
|
reduceDto.setOrderNo(order.getOrderNo());
|
||||||
|
reduceDto.setUpdateEnum(ShopDealerCapitalUpdateEnum.FREEZE_MONEY_THAW);
|
||||||
|
|
||||||
|
//按订单号资金解冻
|
||||||
|
shopDealerUserService.reduceBalance(reduceDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
//5.调整订单为已完成、配送完成状态
|
||||||
|
order.setOrderStatus(1);
|
||||||
|
order.setDeliveryStatus(40);
|
||||||
|
order.setUpdateTime(now);
|
||||||
|
shopOrderService.updateById(order);
|
||||||
|
}
|
||||||
|
|
||||||
private void settleRiderCommissionIfEligible(Integer ticketOrderId, Integer tenantId, boolean requirePhoto) {
|
private void settleRiderCommissionIfEligible(Integer ticketOrderId, Integer tenantId, boolean requirePhoto) {
|
||||||
if (ticketOrderId == null || tenantId == null) {
|
if (ticketOrderId == null || tenantId == null) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public class ShopOrder implements Serializable {
|
|||||||
@Schema(description = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款")
|
@Schema(description = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款")
|
||||||
private Integer orderStatus;
|
private Integer orderStatus;
|
||||||
|
|
||||||
@Schema(description = "发货状态(10未发货 20已发货 30部分发货)")
|
@Schema(description = "发货状态(10未发货 20已发货 30部分发货 40已送达)")
|
||||||
private Integer deliveryStatus;
|
private Integer deliveryStatus;
|
||||||
|
|
||||||
@Schema(description = "发货备注")
|
@Schema(description = "发货备注")
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.gxwebsoft.shop.dto.ShopOrderMyVerifyDto;
|
import com.gxwebsoft.shop.dto.ShopOrderMyVerifyDto;
|
||||||
import com.gxwebsoft.shop.entity.ShopOrder;
|
import com.gxwebsoft.shop.entity.ShopOrder;
|
||||||
import com.gxwebsoft.shop.param.ShopOrderParam;
|
import com.gxwebsoft.shop.param.ShopOrderParam;
|
||||||
|
import com.gxwebsoft.shop.vo.ShopOrderGoodsInfoVO;
|
||||||
import com.gxwebsoft.shop.vo.ShopOrderGoodsVO;
|
import com.gxwebsoft.shop.vo.ShopOrderGoodsVO;
|
||||||
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyItemVO;
|
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyItemVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@@ -79,4 +80,11 @@ public interface ShopOrderMapper extends BaseMapper<ShopOrder> {
|
|||||||
*/
|
*/
|
||||||
IPage<ShopOrderMyVerifyItemVO> getMyVerifyPageInfo(@Param("page") Page page, @Param("entity") ShopOrderMyVerifyDto entity);
|
IPage<ShopOrderMyVerifyItemVO> getMyVerifyPageInfo(@Param("page") Page page, @Param("entity") ShopOrderMyVerifyDto entity);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过订单号查询订单商品名称
|
||||||
|
* @param orderNoList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ShopOrderGoodsInfoVO> getOrderGoodsInfoByOrderNos(@Param("orderNoList") List<String> orderNoList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,7 +241,7 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test="param.statusFilter == 1">
|
<if test="param.statusFilter == 1">
|
||||||
<!-- 1待发货:已付款但未发货 -->
|
<!-- 1待发货:已付款但未发货 -->
|
||||||
AND a.pay_status = 1 AND a.delivery_status = 10 AND a.order_status = 0 AND a.order_type in(1, 3, 4)
|
AND a.pay_status = 1 AND a.delivery_status = 10 AND a.order_status = 0 AND a.order_type in(1, 3, 4, 5)
|
||||||
</if>
|
</if>
|
||||||
<if test="param.statusFilter == 2">
|
<if test="param.statusFilter == 2">
|
||||||
<!-- 2待核销:已付款但订单状态为未使用 -->
|
<!-- 2待核销:已付款但订单状态为未使用 -->
|
||||||
@@ -298,12 +298,12 @@
|
|||||||
-- “全部”默认也会过滤已关闭(取消)订单:statusFilter != 8 时会加 a.order_status != 2
|
-- “全部”默认也会过滤已关闭(取消)订单:statusFilter != 8 时会加 a.order_status != 2
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.order_status != 2 THEN 1 ELSE 0 END), 0) AS total,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.order_status != 2 THEN 1 ELSE 0 END), 0) AS total,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 0 AND a.order_status = 0 THEN 1 ELSE 0 END), 0) AS waitPay,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 0 AND a.order_status = 0 THEN 1 ELSE 0 END), 0) AS waitPay,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND a.order_type in(1, 3, 4) AND a.delivery_status = 10 THEN 1 ELSE 0 END), 0) AS waitDeliver,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND a.order_type in(1, 3, 4, 5) AND a.delivery_status = 10 THEN 1 ELSE 0 END), 0) AS waitDeliver,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND a.order_type = 2 THEN 1 ELSE 0 END), 0) AS waitVerify,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND a.order_type = 2 THEN 1 ELSE 0 END), 0) AS waitVerify,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND (a.delivery_status = 20 or (a.order_type = 2 and a.delivery_status = 10)) THEN 1 ELSE 0 END), 0) AS waitReceive,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 0 AND (a.delivery_status = 20 or (a.order_type = 2 and a.delivery_status = 10)) THEN 1 ELSE 0 END), 0) AS waitReceive,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 1 AND a.evaluate_status = 0 THEN 1 ELSE 0 END), 0) AS waitComment,
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 1 AND a.evaluate_status = 0 THEN 1 ELSE 0 END), 0) AS waitComment,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 1 THEN 1 ELSE 0 END), 0) AS completed,
|
-- COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status = 1 THEN 1 ELSE 0 END), 0) AS completed,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status in(4, 5, 6, 7) THEN 1 ELSE 0 END), 0) AS refund,
|
-- COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.pay_status = 1 AND a.order_status in(4, 5, 6, 7) THEN 1 ELSE 0 END), 0) AS refund,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 1 THEN 1 ELSE 0 END), 0) AS deleted,
|
COALESCE(SUM(CASE WHEN a.deleted = 1 THEN 1 ELSE 0 END), 0) AS deleted,
|
||||||
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.order_status = 2 THEN 1 ELSE 0 END), 0) AS canceled
|
COALESCE(SUM(CASE WHEN a.deleted = 0 AND a.order_status = 2 THEN 1 ELSE 0 END), 0) AS canceled
|
||||||
FROM shop_order a
|
FROM shop_order a
|
||||||
@@ -375,6 +375,23 @@
|
|||||||
</if>
|
</if>
|
||||||
ORDER BY a.create_time desc
|
ORDER BY a.create_time desc
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getOrderGoodsInfoByOrderNos" resultType="com.gxwebsoft.shop.vo.ShopOrderGoodsInfoVO">
|
||||||
|
SELECT
|
||||||
|
a.order_no,
|
||||||
|
b.order_status,
|
||||||
|
c.goods_name
|
||||||
|
FROM
|
||||||
|
glt_ticket_order a
|
||||||
|
LEFT JOIN shop_order b ON a.order_no = b.order_no
|
||||||
|
LEFT JOIN shop_order_goods c ON b.order_id = c.order_id
|
||||||
|
WHERE
|
||||||
|
a.deleted = 0
|
||||||
|
AND b.deleted = 0
|
||||||
|
AND a.order_no in
|
||||||
|
<foreach collection="orderNoList" index="index" item="item" open="(" close=")" separator=",">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
<!-- 根据订单号修改订单 -->
|
<!-- 根据订单号修改订单 -->
|
||||||
<update id="updateByOutTradeNo" parameterType="com.gxwebsoft.cms.entity.CmsWebsite">
|
<update id="updateByOutTradeNo" parameterType="com.gxwebsoft.cms.entity.CmsWebsite">
|
||||||
UPDATE shop_order
|
UPDATE shop_order
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.gxwebsoft.shop.dto.UserOrderStats;
|
|||||||
import com.gxwebsoft.shop.dto.VerifyShopOrderDto;
|
import com.gxwebsoft.shop.dto.VerifyShopOrderDto;
|
||||||
import com.gxwebsoft.shop.entity.ShopOrder;
|
import com.gxwebsoft.shop.entity.ShopOrder;
|
||||||
import com.gxwebsoft.shop.param.ShopOrderParam;
|
import com.gxwebsoft.shop.param.ShopOrderParam;
|
||||||
|
import com.gxwebsoft.shop.vo.ShopOrderGoodsInfoVO;
|
||||||
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyVO;
|
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyVO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -102,4 +103,11 @@ public interface ShopOrderService extends IService<ShopOrder> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Boolean verifyOrder(VerifyShopOrderDto verifyDto);
|
Boolean verifyOrder(VerifyShopOrderDto verifyDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过订单号查询订单商品名称
|
||||||
|
* @param orderNoList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ShopOrderGoodsInfoVO> getOrderGoodsInfoByOrderNos(List<String> orderNoList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
|||||||
ShopDealerCapitalUpdateEnum.MANAGEMENT_INCOME.getType(), ShopDealerCapitalUpdateEnum.DIVIDEND_INCOME.getType(),
|
ShopDealerCapitalUpdateEnum.MANAGEMENT_INCOME.getType(), ShopDealerCapitalUpdateEnum.DIVIDEND_INCOME.getType(),
|
||||||
ShopDealerCapitalUpdateEnum.PROMOTION_INCOME.getType(), ShopDealerCapitalUpdateEnum.PROMOTION_PARENT_INCOME.getType(),
|
ShopDealerCapitalUpdateEnum.PROMOTION_INCOME.getType(), ShopDealerCapitalUpdateEnum.PROMOTION_PARENT_INCOME.getType(),
|
||||||
ShopDealerCapitalUpdateEnum.FREEZE_MONEY_THAW.getType(), ShopDealerCapitalUpdateEnum.DELIVERY_INCOME.getType(),
|
ShopDealerCapitalUpdateEnum.FREEZE_MONEY_THAW.getType(), ShopDealerCapitalUpdateEnum.DELIVERY_INCOME.getType(),
|
||||||
ShopDealerCapitalUpdateEnum.DELIVERY_REWARD.getType()), ShopDealerCapitalUpdateEnum.DELIVERY_FLOOR_FEE.getType())
|
ShopDealerCapitalUpdateEnum.DELIVERY_REWARD.getType(), ShopDealerCapitalUpdateEnum.DELIVERY_FLOOR_FEE.getType()))
|
||||||
.isNotNull(ShopDealerCapital::getUserId)
|
.isNotNull(ShopDealerCapital::getUserId)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -328,15 +328,15 @@ public class ShopDealerUserServiceImpl extends ServiceImpl<ShopDealerUserMapper,
|
|||||||
List<ShopDealerUser> finalShopDealerUserList = shopDealerUserList;
|
List<ShopDealerUser> finalShopDealerUserList = shopDealerUserList;
|
||||||
BigDecimal finalRate = rate;
|
BigDecimal finalRate = rate;
|
||||||
userDealerMap.forEach((k, value) ->{
|
userDealerMap.forEach((k, value) ->{
|
||||||
BigDecimal money = value.stream().map(ShopDealerCapital::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(finalRate);
|
BigDecimal money = value.stream().map(ShopDealerCapital::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(finalRate).setScale(3, RoundingMode.HALF_UP);
|
||||||
BigDecimal freezeMoney = value.stream().map(ShopDealerCapital::getFreezeMoney).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(finalRate);
|
BigDecimal freezeMoney = value.stream().map(ShopDealerCapital::getFreezeMoney).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(finalRate).setScale(3, RoundingMode.HALF_UP);
|
||||||
|
|
||||||
ShopDealerUser dealerUser = finalShopDealerUserList.stream().filter(shopDealerUser -> k.equals(shopDealerUser.getUserId())).findFirst().orElse(null);
|
ShopDealerUser dealerUser = finalShopDealerUserList.stream().filter(shopDealerUser -> k.equals(shopDealerUser.getUserId())).findFirst().orElse(null);
|
||||||
if(dealerUser != null){
|
if(dealerUser != null){
|
||||||
//11.修改分销用户账户信息
|
//11.修改分销用户账户信息
|
||||||
dealerUser.setMoney(dealerUser.getMoney().subtract(money));
|
dealerUser.setMoney(dealerUser.getMoney().subtract(money).compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : dealerUser.getMoney().subtract(money));
|
||||||
dealerUser.setFreezeMoney(dealerUser.getFreezeMoney().subtract(freezeMoney));
|
dealerUser.setFreezeMoney(dealerUser.getFreezeMoney().subtract(freezeMoney).compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : dealerUser.getFreezeMoney().subtract(freezeMoney));
|
||||||
dealerUser.setTotalMoney(dealerUser.getTotalMoney().subtract(money.add(freezeMoney)));
|
dealerUser.setTotalMoney(dealerUser.getTotalMoney().subtract(money.add(freezeMoney)).compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : dealerUser.getTotalMoney().subtract(money.add(freezeMoney)));
|
||||||
dealerUser.setUpdateTime(LocalDateTime.now());
|
dealerUser.setUpdateTime(LocalDateTime.now());
|
||||||
shopDealerUserUpdateList.add(dealerUser);
|
shopDealerUserUpdateList.add(dealerUser);
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import com.gxwebsoft.shop.entity.*;
|
|||||||
import com.gxwebsoft.shop.mapper.*;
|
import com.gxwebsoft.shop.mapper.*;
|
||||||
import com.gxwebsoft.shop.param.ShopOrderParam;
|
import com.gxwebsoft.shop.param.ShopOrderParam;
|
||||||
import com.gxwebsoft.shop.service.*;
|
import com.gxwebsoft.shop.service.*;
|
||||||
|
import com.gxwebsoft.shop.vo.ShopOrderGoodsInfoVO;
|
||||||
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyItemVO;
|
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyItemVO;
|
||||||
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyVO;
|
import com.gxwebsoft.shop.vo.ShopOrderMyVerifyVO;
|
||||||
import com.wechat.pay.java.core.Config;
|
import com.wechat.pay.java.core.Config;
|
||||||
@@ -629,6 +630,11 @@ public class ShopOrderServiceImpl extends ServiceImpl<ShopOrderMapper, ShopOrder
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ShopOrderGoodsInfoVO> getOrderGoodsInfoByOrderNos(List<String> orderNoList) {
|
||||||
|
return baseMapper.getOrderGoodsInfoByOrderNos(orderNoList);
|
||||||
|
}
|
||||||
|
|
||||||
private static Long getLong(Map<String, Object> raw, String key) {
|
private static Long getLong(Map<String, Object> raw, String key) {
|
||||||
Object value = raw.get(key);
|
Object value = raw.get(key);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.gxwebsoft.shop.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单商品信息
|
||||||
|
* @author xm
|
||||||
|
* @since 2025-01-12
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(description = "订单商品信息")
|
||||||
|
public class ShopOrderGoodsInfoVO {
|
||||||
|
|
||||||
|
@Schema(description = "订单号")
|
||||||
|
private String orderNo;
|
||||||
|
|
||||||
|
@Schema(description = "订单状态")
|
||||||
|
private Integer orderStatus;
|
||||||
|
|
||||||
|
@Schema(description = "订单品名")
|
||||||
|
private String goodsName;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user