订单优化

This commit is contained in:
admin
2024-06-10 00:24:53 +08:00
parent ce83c0e973
commit 16f3bda85a
10 changed files with 157 additions and 10 deletions

View File

@@ -3,6 +3,7 @@ package com.starry.admin.modules.order.controller;
import com.starry.admin.common.exception.CustomException; import com.starry.admin.common.exception.CustomException;
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
import com.starry.admin.modules.order.module.vo.PlayOrderEditAcceptByVo; import com.starry.admin.modules.order.module.vo.PlayOrderEditAcceptByVo;
import com.starry.admin.modules.order.module.vo.PlayOrderEditBackendRemarkByVo;
import com.starry.admin.modules.order.module.vo.PlayOrderInfoQueryVo; import com.starry.admin.modules.order.module.vo.PlayOrderInfoQueryVo;
import com.starry.admin.modules.order.module.vo.PlayOrderRefundAddVo; import com.starry.admin.modules.order.module.vo.PlayOrderRefundAddVo;
import com.starry.admin.modules.order.service.IPlayOrderInfoService; import com.starry.admin.modules.order.service.IPlayOrderInfoService;
@@ -69,12 +70,25 @@ public class PlayOrderInfoController {
} }
/**
* 跟换店员
*/
@PostMapping("/orderEditBackendRemark")
public R orderEditBackendRemark(@Validated @RequestBody PlayOrderEditBackendRemarkByVo vo) {
PlayOrderInfoEntity orderInfo = orderInfoService.selectOrderInfoById(vo.getOrderId());
PlayOrderInfoEntity updateOrderInfo = new PlayOrderInfoEntity();
updateOrderInfo.setId(orderInfo.getId());
updateOrderInfo.setBackendRemark(vo.getBackendRemark());
return R.ok(orderInfoService.update(updateOrderInfo));
}
/** /**
* 根据ID查询订单 * 根据ID查询订单
*/ */
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public R getInfo(@PathVariable("id") String id) { public R getInfo(@PathVariable("id") String id) {
return R.ok(orderInfoService.selectOrderInfoById(id)); return R.ok(orderInfoService.selectById(id));
} }

View File

@@ -1,7 +1,9 @@
package com.starry.admin.modules.order.module.entity; package com.starry.admin.modules.order.module.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.starry.admin.common.conf.StringTypeHandler;
import com.starry.common.domain.BaseEntity; import com.starry.common.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -9,6 +11,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
/** /**
* 订单对象 order_info * 订单对象 order_info
@@ -115,6 +118,13 @@ public class PlayOrderInfoEntity extends BaseEntity<PlayOrderInfoEntity> {
private String commodityNumber; private String commodityNumber;
/**
* 订单要求
*/
@TableField(typeHandler = StringTypeHandler.class)
private List<String> labels;
/** /**
* 是否使用优惠券[0:未使用,1:已使用] * 是否使用优惠券[0:未使用,1:已使用]
*/ */
@@ -157,6 +167,11 @@ public class PlayOrderInfoEntity extends BaseEntity<PlayOrderInfoEntity> {
*/ */
private BigDecimal estimatedRevenue; private BigDecimal estimatedRevenue;
/**
* 店员收入比例
*/
private Integer estimatedRevenueRatio;
/** /**
* 优惠金额 * 优惠金额
@@ -249,6 +264,12 @@ public class PlayOrderInfoEntity extends BaseEntity<PlayOrderInfoEntity> {
private String remark; private String remark;
/**
* 后台备注
*/
private String backendRemark;
/** /**
* 订单结算状态(0:未结算;1:已结算) * 订单结算状态(0:未结算;1:已结算)
*/ */

View File

@@ -5,6 +5,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 订单查询返回对象 * 订单查询返回对象
@@ -152,6 +153,17 @@ public class PlayOrderDetailsReturnVo {
*/ */
private String remark; private String remark;
/**
* 订单要求
*/
private List<String> labels;
/**
* 是否是首单【0不是1是】
*/
private String firstOrder;
/** /**
* 是否评价1已评价;0:未评价) * 是否评价1已评价;0:未评价)

View File

@@ -1,8 +1,6 @@
package com.starry.admin.modules.order.module.vo; package com.starry.admin.modules.order.module.vo;
import com.starry.common.domain.BasePageEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@@ -13,8 +11,7 @@ import javax.validation.constraints.NotNull;
* @since 2024-03-20 * @since 2024-03-20
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) public class PlayOrderEditAcceptByVo {
public class PlayOrderEditAcceptByVo extends BasePageEntity {
/** /**

View File

@@ -0,0 +1,33 @@
package com.starry.admin.modules.order.module.vo;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
/**
* 订单查询对象
*
* @author admin
* @since 2024-03-20
*/
@Data
public class PlayOrderEditBackendRemarkByVo {
/**
* uuid
*/
@NotNull(message = "orderId不能为空")
private String orderId;
/**
* 后台备注不能为空
*/
@NotNull(message = "后台备注不能为空")
@Length(min = 1, max = 100, message = "后台备注字符长度在1-100个字符之间")
private String backendRemark;
}

View File

@@ -159,11 +159,28 @@ public class PlayOrderInfoReturnVo {
*/ */
private BigDecimal estimatedRevenue = BigDecimal.ZERO; private BigDecimal estimatedRevenue = BigDecimal.ZERO;
/**
* 店员收入比例
*/
private Integer estimatedRevenueRatio;
/**
* 微信号码
*/
private String weiChatCode;
/** /**
* 订单备注 * 订单备注
*/ */
private String remark; private String remark;
/**
* 后台备注
*/
private String backendRemark;
} }

View File

@@ -74,6 +74,19 @@ public interface IPlayOrderInfoService extends IService<PlayOrderInfoEntity> {
* @since 2024/6/3 11:12 * @since 2024/6/3 11:12
**/ **/
BigDecimal getEstimatedRevenue(String clerkId, String placeType, String firstOrder, BigDecimal finalAmount); BigDecimal getEstimatedRevenue(String clerkId, String placeType, String firstOrder, BigDecimal finalAmount);
/**
* 根据店员等级,获取店员提成比例
*
* @param clerkId 店员ID
* @param placeType 下单类型(-1:其他类型;0:指定单;1:随机单;2:打赏单)
* @param firstOrder 是否是首单【0不是1是】
* @return math.BigDecimal 店员预计收入
* @author admin
* @since 2024/6/3 11:12
**/
Integer getEstimatedRevenueRatio(String clerkId, String placeType, String firstOrder);
/** /**
* 新增打赏单 * 新增打赏单
* *

View File

@@ -101,6 +101,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
if (StrUtil.isNotBlank(acceptBy)) { if (StrUtil.isNotBlank(acceptBy)) {
entity.setAcceptBy(acceptBy); entity.setAcceptBy(acceptBy);
entity.setEstimatedRevenue(getEstimatedRevenue(acceptBy, placeType, firstOrder, finalAmount)); entity.setEstimatedRevenue(getEstimatedRevenue(acceptBy, placeType, firstOrder, finalAmount));
entity.setEstimatedRevenueRatio(getEstimatedRevenueRatio(acceptBy, placeType, firstOrder));
} }
// 如果订单是打赏单,订单直接完成 // 如果订单是打赏单,订单直接完成
if ("2".equals(placeType)) { if ("2".equals(placeType)) {
@@ -160,6 +161,42 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
} }
} }
@Override
public Integer getEstimatedRevenueRatio(String clerkId, String placeType, String firstOrder) {
PlayClerkLevelInfoEntity entity = playClerkUserInfoService.queryLevelCommission(clerkId);
switch (placeType) {
case "0": {
if ("1".equals(firstOrder)) {
return entity.getFirstRegularRatio();
} else {
return entity.getNotFirstRegularRatio();
}
}
case "1": {
if ("1".equals(firstOrder)) {
return entity.getFirstRandomRadio();
} else {
return entity.getNotFirstRandomRadio();
}
}
case "2": {
if ("1".equals(firstOrder)) {
return entity.getFirstRewardRatio();
} else {
return entity.getNotFirstRewardRatio();
}
}
case "-1": {
log.error("下单类型异常placeType={}", placeType);
return 100;
}
default: {
log.error("下单类型错误placeType={}", placeType);
return 100;
}
}
}
/** /**
* 新增打赏单 * 新增打赏单
* 打赏订单直接完成 * 打赏订单直接完成
@@ -530,11 +567,6 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId, PlayOrderInfoEntity::getPurchaserBy); lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId, PlayOrderInfoEntity::getPurchaserBy);
// 子表-店员表 // 子表-店员表
lambdaQueryWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy); lambdaQueryWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
// 子表-店员服务项目表
// 商品表
// lambdaQueryWrapper.selectAs(PlayCommodityInfoEntity::getId, "commodityId").selectAs(PlayCommodityInfoEntity::getItemType, "commodityName").selectAs(PlayCommodityInfoEntity::getItemName, "serviceDuration").selectAs(PlayCommodityInfoEntity::getPrice, "commodityPrice");
// lambdaQueryWrapper.leftJoin(PlayCommodityInfoEntity.class, PlayCommodityInfoEntity::getId, PlayOrderInfoEntity::getCommodityId);
if (StringUtils.isNotBlank(entity.getId())) { if (StringUtils.isNotBlank(entity.getId())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, entity.getId()); lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, entity.getId());
} }
@@ -578,6 +610,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
entity.setAcceptBy(acceptBy); entity.setAcceptBy(acceptBy);
entity.setAcceptTime(LocalDateTime.now()); entity.setAcceptTime(LocalDateTime.now());
entity.setEstimatedRevenue(this.getEstimatedRevenue(acceptBy, orderInfo.getPlaceType(), orderInfo.getFirstOrder(), orderInfo.getFinalAmount())); entity.setEstimatedRevenue(this.getEstimatedRevenue(acceptBy, orderInfo.getPlaceType(), orderInfo.getFirstOrder(), orderInfo.getFinalAmount()));
entity.setEstimatedRevenueRatio(this.getEstimatedRevenueRatio(acceptBy, orderInfo.getPlaceType(), orderInfo.getFirstOrder()));
this.baseMapper.updateById(entity); this.baseMapper.updateById(entity);
} }

View File

@@ -69,6 +69,7 @@ public class PlayOrderRandomInfoServiceImpl extends ServiceImpl<PlayOrderRandomI
PlayOrderInfoEntity orderInfo = playOrderInfoService.selectOrderInfoById(id); PlayOrderInfoEntity orderInfo = playOrderInfoService.selectOrderInfoById(id);
vo.setEstimatedRevenue(playOrderInfoService.getEstimatedRevenue(clerkId, orderInfo.getPlaceType(), orderInfo.getFirstOrder(), orderInfo.getFinalAmount())); vo.setEstimatedRevenue(playOrderInfoService.getEstimatedRevenue(clerkId, orderInfo.getPlaceType(), orderInfo.getFirstOrder(), orderInfo.getFinalAmount()));
vo.setEstimatedRevenueRatio(playOrderInfoService.getEstimatedRevenueRatio(clerkId, orderInfo.getPlaceType(), orderInfo.getFirstOrder()));
return vo; return vo;
} }

View File

@@ -92,6 +92,12 @@ public class PlayClerkRandomOrderDetailReturnVo {
*/ */
private BigDecimal estimatedRevenue; private BigDecimal estimatedRevenue;
/**
* 店员收入比例
*/
private Integer estimatedRevenueRatio;
/** /**
* 优惠金额 * 优惠金额
*/ */