上一篇https://www.cnblogs.com/taiguyiba/p/9828984.html 整合了数据库表和Dao层代码
这一篇继续设计数据封装类:
涉及到获取秒杀地址,查询,返回秒杀结果等内容
1.数据封装:
1.1 秒杀地址封装类Exposer
创建Exposer类,用于封装秒杀地址:如果开启秒杀,则返回状态、秒杀地址md5加密值和ID,如果秒杀未开启,则返回开始时间、结束时间等。
Exposer.java
package com.seckill.dto;public classExposer {//是否开启秒杀
privateboolean exposed;//md5加密
privateString md5;//id
private longseckillId;//now time
private longnow;//start time
private longstart;//end time
private longend;public Exposer(boolean exposed, String md5,longseckillId) {
super();this.exposed =exposed;this.md5 =md5;this.seckillId =seckillId;
}public Exposer(boolean exposed, long now, long start, long end,longseckillId) {
super();this.exposed =exposed;this.now =now;this.start =start;this.end =end;this.seckillId =seckillId;
}public Exposer(boolean exposed, longseckillId) {
super();this.exposed =exposed;this.seckillId =seckillId;
}publicboolean isExposed() {returnexposed;
}public voidsetExposed(boolean exposed) {this.exposed =exposed;
}publicString getMd5() {returnmd5;
}public voidsetMd5(String md5) {this.md5 =md5;
}public longgetSeckillId() {returnseckillId;
}public void setSeckillId(longseckillId) {this.seckillId =seckillId;
}public longgetNow() {returnnow;
}public void setNow(longnow) {this.now =now;
}public longgetStart() {returnstart;
}public void setStart(longstart) {this.start =start;
}public longgetEnd() {returnend;
}public void setEnd(longend) {this.end =end;
}
@OverridepublicString 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 classSeckillExecution {private longseckillId;private intstate;privateString stateInfo;privateSuccessKilled successKilled;public SeckillExecution(longseckillId,SeckillStateEnum seckillStateEnum, SuccessKilled successKilled) {
super();this.seckillId =seckillId;this.state =seckillStateEnum.getState();this.stateInfo =seckillStateEnum.getStateInfo();this.successKilled =successKilled;
}public SeckillExecution(longseckillId, SeckillStateEnum seckillStateEnum) {
super();this.seckillId =seckillId;this.state =seckillStateEnum.getState();this.stateInfo =seckillStateEnum.getStateInfo();
}publicSeckillExecution(SeckillStateEnum seckillStateEnum) {
super();this.state =seckillStateEnum.getState();this.stateInfo =seckillStateEnum.getStateInfo();
}public longgetSeckillId() {returnseckillId;
}public void setSeckillId(longseckillId) {this.seckillId =seckillId;
}public intgetState() {returnstate;
}public void setState(intstate) {this.state =state;
}publicString getStateInfo() {returnstateInfo;
}public voidsetStateInfo(String stateInfo) {this.stateInfo =stateInfo;
}publicSuccessKilled getSuccessKilled() {returnsuccessKilled;
}public voidsetSuccessKilled(SuccessKilled successKilled) {this.successKilled =successKilled;
}
@OverridepublicString toString() {return "SeckillExecution [seckillId=" + seckillId + ", state=" + state + ", stateInfo=" +stateInfo+ ", successKilled=" + successKilled + "]";
}
}
1.3 前端请求结果封装类 SeckillResult
SeckillResult 用于封装前端请求的结果:
package com.seckill.dto;/**
* 所有ajax请求封装
* @author mayn
**/
public class SeckillResult{privateboolean success;privateT data;privateString error;publicSeckillResult(boolean success, T data) {
super();this.success =success;this.data =data;
}publicSeckillResult(boolean success, String error) {
super();this.success =success;this.error =error;
}publicboolean isSuccess() {returnsuccess;
}public voidsetSuccess(boolean success) {this.success =success;
}publicT getData() {returndata;
}public voidsetData(T data) {this.data =data;
}publicString getError() {returnerror;
}public voidsetError(String error) {this.error =error;
}
}
1.4 常量数据字典 SeckillStateEnum
SeckillStateEnum用于封装数据字典:
package com.seckill.enums;/**
* 使用枚举标示常量数据字典
* @author mayn
**/
public enumSeckillStateEnum {
SUCCESSD(1,"秒杀成功"),
END(0,"秒杀结束"),
REPEAT_KILL(-1,"重复秒杀"),
INNER_ERROR(-2,"内部错误"),
DATA_REWRITE(-3,"数据篡改")
;private intstate;privateString stateInfo;private SeckillStateEnum(intstate, String stateInfo) {this.state =state;this.stateInfo =stateInfo;
}public intgetState() {returnstate;
}publicString getStateInfo() {returnstateInfo;
}public static SeckillStateEnum stateOf(intindex) {for(SeckillStateEnum state : values()) {if(state.getState() ==index) {returnstate;
}
}return null;
}
}
1.5 封装异常类
RepeatKillException 重复秒杀异常类
package com.seckill.exception;public classRepeatKillException extends RuntimeException {publicRepeatKillException(String message, Throwable cause) {
super(message, cause);//TODO Auto-generated constructor stub
}publicRepeatKillException(String message) {
super(message);//TODO Auto-generated constructor stub
}
}
SeckillCloseException 秒杀关闭异常类
package com.seckill.exception;public classSeckillCloseException extends RuntimeException {publicSeckillCloseException(String message, Throwable cause) {
super(message, cause);//TODO Auto-generated constructor stub
}publicSeckillCloseException(String message) {
super(message);//TODO Auto-generated constructor stub
}
}
SeckillException 秒杀异常类
package com.seckill.exception;public classSeckillException extends RuntimeException {publicSeckillException(String message, Throwable cause) {
super(message, cause);//TODO Auto-generated constructor stub
}publicSeckillException(String message) {
super(message);//TODO Auto-generated constructor stub
}
}