订单优化

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

View File

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

View File

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

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 Integer estimatedRevenueRatio;
/**
* 微信号码
*/
private String weiChatCode;
/**
* 订单备注
*/
private String remark;
/**
* 后台备注
*/
private String backendRemark;
}

View File

@@ -74,6 +74,19 @@ public interface IPlayOrderInfoService extends IService<PlayOrderInfoEntity> {
* @since 2024/6/3 11:12
**/
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)) {
entity.setAcceptBy(acceptBy);
entity.setEstimatedRevenue(getEstimatedRevenue(acceptBy, placeType, firstOrder, finalAmount));
entity.setEstimatedRevenueRatio(getEstimatedRevenueRatio(acceptBy, placeType, firstOrder));
}
// 如果订单是打赏单,订单直接完成
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(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())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getId, entity.getId());
}
@@ -578,6 +610,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
entity.setAcceptBy(acceptBy);
entity.setAcceptTime(LocalDateTime.now());
entity.setEstimatedRevenue(this.getEstimatedRevenue(acceptBy, orderInfo.getPlaceType(), orderInfo.getFirstOrder(), orderInfo.getFinalAmount()));
entity.setEstimatedRevenueRatio(this.getEstimatedRevenueRatio(acceptBy, orderInfo.getPlaceType(), orderInfo.getFirstOrder()));
this.baseMapper.updateById(entity);
}

View File

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

View File

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