微信点餐系统之exception,utils,VO,dto

本文深入探讨了异常处理机制,特别是在Java中如何通过继承RuntimeException来自定义异常类SellException。此外,文章还介绍了KeyUtil类用于生成唯一主键的方法,以及VO(View Object)、DTO(Data Transfer Object)在前后端数据交换中的应用,强调了数据安全性和信息筛选的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Exception

  • 继承RuntimeException方法
  • 调用父类的super(msg)方法,将错误 的信息传递出去

import cn.cumt.sell.enums.ResultEnum;

public class SellException extends  RuntimeException {
    private  Integer code;

    public SellException(ResultEnum resultEnum) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
    }
}

utils(keyUtil)

  • 作用:生成主键。例如订单的主键
  • 格式:时间(毫秒级别)+6为随机数
  • 精确到毫秒级别的时间和6位随机数,基本不太会产生相同的数字。但是高并发时,仍有可能会发生。所以,我们加一个线程同步。
public class KeyUtil {
    public  static  synchronized String genUniqueKey(){
        Random random = new Random();
        Integer number = random.nextInt(900000)+100000;//生成6位随机数
        return System.currentTimeMillis()+String.valueOf(number);
    }
}

VO(view object)

  • 我们只将我们需要展示给前段页面的数据传递给前段。
  • 例子:商品的信息有:种类,价钱,库存。买家(前端页面)不需要知道库存,我们也不能给它,否则会危害到数据段安全与隐私。所以,我们另外建立类一个实体类。类中的信息,以json的格式返回给前端页面。
@Data
public class ProductVO {
/**
 *    private String name;
 * 前端要求返回的json的键为name,但是只将其命名为name ,会忘记他到底是啥(商品名或者是其他什么名字)
 * 对象序列化的时候就是正儿八经的name
 */
    @JsonProperty("name")
   private String categoryName;

    @JsonProperty("type")
   private Integer categoryTYpe;

    @JsonProperty("foods")
    private List<ProductInfoVO> productInfoVOS ;
}
@Data
public class ProductInfoVO {
    @JsonProperty("id")
    private String productId;

    @JsonProperty("name")
    private String productName;

    @JsonProperty("price")
    private BigDecimal productPrice;

    @JsonProperty("description")
    private String productDescription;

    @JsonProperty("icon")
    private String productIcon;
}

@Data
public class ResultVO<T>{
    /*错误码*/
    private  Integer code;

    /*提示信息*/
    private  String message;

    /*具体内容*/
    private T data;
}

DTO (DATA TRANSFER OBJECT)

  • 与VO相反,dto与Controller交互,他是接收controller传递过来的数据。比如,页面传递过来的订单信息。买家是谁,叫啥,手机号是啥。订单详细信息,买了啥,买类多少等。
import lombok.Data;

@Data
public class CarDTO {
    /**商品id*/
    private  String prouctId;

    /**数量.*/
    private Integer productQuantity;

    public CarDTO(String prouctId, Integer productQuantity) {
        this.prouctId = prouctId;
        this.productQuantity = productQuantity;
    }
}

@Data
public class OrderDTO {

    private  String orderId;

    private  String buyerName;

    private  String buyerPhone;

    private  String  buyerAddress;

    private  String buyerOpenid;

    private BigDecimal orderAmount;
    /*订单的状态,默认为新下单*/
    private  Integer orderStatus;

    /**支付状态,默认为0,未支付*/
    private  Integer payStatus ;

    /**创建时间*/
    private Date createTime;

    /**更新时间*/
    private Date updateTime;

    List<OrderDetail> orderDetailList;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值