Java秒杀简单设计三:数据封装类

news/2024/7/24 11:35:41 标签: java, 数据库, 前端

上一篇https://www.cnblogs.com/taiguyiba/p/9828984.html 整合了数据库表和Dao层代码

这一篇继续设计数据封装类:

涉及到获取秒杀地址,查询,返回秒杀结果等内容

1.数据封装:

1.1 秒杀地址封装类Exposer

创建Exposer类,用于封装秒杀地址:如果开启秒杀,则返回状态、秒杀地址md5加密值和ID,如果秒杀未开启,则返回开始时间、结束时间等。

Exposer.java

package com.seckill.dto;

public class Exposer {
    //是否开启秒杀
    private boolean exposed;
    //md5加密
    private String md5;
    //id
    private long seckillId;
    //now time
    private long now;
    //start time
    private long start;
    //end time
    private long end;
    public Exposer(boolean exposed, String md5,long seckillId) {
        super();
        this.exposed = exposed;
        this.md5 = md5;
        this.seckillId = seckillId;
    }
    public Exposer(boolean exposed, long now, long start, long end,long seckillId) {
        super();
        this.exposed = exposed;
        this.now = now;
        this.start = start;
        this.end = end;
        this.seckillId = seckillId;
    }
    public Exposer(boolean exposed, long seckillId) {
        super();
        this.exposed = exposed;
        this.seckillId = seckillId;
    }
    public boolean isExposed() {
        return exposed;
    }
    public void setExposed(boolean exposed) {
        this.exposed = exposed;
    }
    public String getMd5() {
        return md5;
    }
    public void setMd5(String md5) {
        this.md5 = md5;
    }
    public long getSeckillId() {
        return seckillId;
    }
    public void setSeckillId(long seckillId) {
        this.seckillId = seckillId;
    }
    public long getNow() {
        return now;
    }
    public void setNow(long now) {
        this.now = now;
    }
    public long getStart() {
        return start;
    }
    public void setStart(long start) {
        this.start = start;
    }
    public long getEnd() {
        return end;
    }
    public void setEnd(long end) {
        this.end = end;
    }
    @Override
    public String toString() {
        return "Exposer [exposed=" + exposed + ", md5=" + md5 + ", seckillId=" + seckillId + ", now=" + now + ", start="
                + start + ", end=" + end + "]";
    }
}

 1.2 秒杀结果封装类 SeckillExecution

   SeckillExecution主要用于封装秒杀结果

   

package com.seckill.dto;

import com.seckill.entity.SuccessKilled;
import com.seckill.enums.SeckillStateEnum;
/**
 * 数据传递
 * 其中并没有添加枚举类型,转换成json有问题
 * @author lll
 *
 */
public class SeckillExecution {

    private long seckillId;

    private int state;
    
    private String stateInfo;
    
    private SuccessKilled successKilled;

    public SeckillExecution(long seckillId,SeckillStateEnum seckillStateEnum, SuccessKilled successKilled) {
        super();
        this.seckillId = seckillId;
        this.state = seckillStateEnum.getState();
        this.stateInfo = seckillStateEnum.getStateInfo();
        this.successKilled = successKilled;
    }
    public SeckillExecution(long seckillId, SeckillStateEnum seckillStateEnum) {
        super();
        this.seckillId = seckillId;
        this.state = seckillStateEnum.getState();
        this.stateInfo = seckillStateEnum.getStateInfo();
    }
    public SeckillExecution(SeckillStateEnum seckillStateEnum) {
        super();
        this.state = seckillStateEnum.getState();
        this.stateInfo = seckillStateEnum.getStateInfo();
    }
    public long getSeckillId() {
        return seckillId;
    }
    public void setSeckillId(long seckillId) {
        this.seckillId = seckillId;
    }
    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public String getStateInfo() {
        return stateInfo;
    }

    public void setStateInfo(String stateInfo) {
        this.stateInfo = stateInfo;
    }

    public SuccessKilled getSuccessKilled() {
        return successKilled;
    }

    public void setSuccessKilled(SuccessKilled successKilled) {
        this.successKilled = successKilled;
    }

    @Override
    public String toString() {
        return "SeckillExecution [seckillId=" + seckillId + ", state=" + state + ", stateInfo=" + stateInfo
                + ", successKilled=" + successKilled + "]";
    }

}

 

1.3 前端请求结果封装类 SeckillResult

      SeckillResult<T> 用于封装前端请求的结果:

package com.seckill.dto;
/**
 * 所有ajax请求封装
 * @author mayn
 *
 */
public class SeckillResult<T> {
    
    private boolean success;
    
    private T data;
    
    private String error;

    public SeckillResult(boolean success, T data) {
        super();
        this.success = success;
        this.data = data;
    }

    public SeckillResult(boolean success, String error) {
        super();
        this.success = success;
        this.error = error;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
}

 

1.4 常量数据字典 SeckillStateEnum

 SeckillStateEnum用于封装数据字典:

package com.seckill.enums;
/**
 * 使用枚举标示常量数据字典
 * @author mayn
 *
 */
public enum SeckillStateEnum {
    SUCCESSD(1,"秒杀成功"),
    END(0,"秒杀结束"),
    REPEAT_KILL(-1,"重复秒杀"),
    INNER_ERROR(-2,"内部错误"),
    DATA_REWRITE(-3,"数据篡改")
    ;
    private int state;
    
    private String stateInfo;

    private SeckillStateEnum(int state, String stateInfo) {
        this.state = state;
        this.stateInfo = stateInfo;
    }

    public int getState() {
        return state;
    }

    public String getStateInfo() {
        return stateInfo;
    }
    public static SeckillStateEnum stateOf(int index) {
        for(SeckillStateEnum state : values()) {
            if(state.getState() == index) {
                return state;
            }
        }
        return null;
    }
}

 1.5 封装异常类

 RepeatKillException 重复秒杀异常类

package com.seckill.exception;

public class RepeatKillException extends RuntimeException {

    public RepeatKillException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public RepeatKillException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }
}

 SeckillCloseException 秒杀关闭异常类

package com.seckill.exception;

public class SeckillCloseException extends RuntimeException {

    public SeckillCloseException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public SeckillCloseException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }

}

 

SeckillException 秒杀异常类

package com.seckill.exception;

public class SeckillException extends RuntimeException {

    public SeckillException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public SeckillException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }

}

 

转载于:https://www.cnblogs.com/taiguyiba/p/9829191.html


http://www.niftyadmin.cn/n/797474.html

相关文章

JS复制到剪贴板

// 将内容复制到剪贴板copyRow(url) {let input document.createElement("input"); // js创建一个input输入框input.value url; // 将需要复制的文本赋值到创建的input输入框中&#xff0c;this.ruleForm.url这个是我要复制的内容document.body.appendChild(input)…

mysql备份要注意哪些_mysqldump备份数据需要注意的细节

导读用mysqldump备份数据时&#xff0c;加上 -w 条件选项过滤部分数据&#xff0c;发现导出结果比实际少了40万&#xff0c;什么情况&#xff1f;问题我的朋友小文前几天遇到一个怪事&#xff0c;他用mysqldump备份数据时&#xff0c;加上了 -w 选项过滤部分数据&#xff0c;发…

了解计算机的发展历程

前言 好好了解一下计算机历史&#xff0c;为什么会发展成今天这个样子&#xff1f;一个完整的计算机系统包括硬件系统和软件系统两部分&#xff0c;二者缺一不可。其实在电子计算机之前也有一些机械式的计算机&#xff0c;从功能上来说也确实可以帮助人类计算&#xff0c;但质的…

兼容各大浏览器导出Excel

// 下载模板downloadModel() {this.$http({url: this.$http.adornUrl("/prod/category/template"),method: "get",responseType: "blob", // 解决文件下载乱码问题}).then(({ data }) > {var blob new Blob([data], {type: "applicatio…

vue 样式class多选、单选,vue多选,vue单选

1.这里通过for循环列出数据&#xff0c;绑定需要写样式的className&#xff1a;原有className‘shop-checked’&#xff1b;选中classNameis-shop-checked <span v-for"(itemIn,index)in data" class"shop-checked-parcel" click"onShopChecked(i…

vooc充电原理_霸榜充电领域?OPPO125W超级闪充再现黑科技,权威外媒实力打Call...

要说这段时间科技圈的大新闻&#xff0c;肯定要数OPPO在闪充沟通会上发布的新一代超级闪充技术了。这其中所包括125W超级闪充技术&#xff0c;经测试可以在5分钟将电量充至41%&#xff0c;实现了20分钟充满等效4000mAh容量电池。此外&#xff0c;OPPO更将熄屏待机充电时的温度严…

el-tree子节点半选,父节点全选,数据回显时子节点部分选中,父节点都全选中

//后台返回数据 //data.menuIds //格式 //[1,2,3] const selfthis self.$nextTick(() > {const arr []data.menuIds.forEach(f > {if (!self.$refs.menuListTree.getNode(f).childNodes || !self.$refs.menuListTree.getNode(f).childNodes.length) {arr.push(f)}})self…