为了完成商铺注册,简单的entity类并不能满足我们的需求。我们需要对其扩展
新建了下面的类
包含注册商铺所需要的所有的属性。
package storepro.dto;
import storepro.entity.Shop;
import storepro.enums.ShopStateEnum;
import java.util.List;
public class ShopExecution {
private int state;//结果状态
private String stateInfo;//状态解释
private int count;//店铺数量
private Shop shop;//操作的店铺(增删改店铺用到)
private List<Shop> shopList;//shop列表(查询店铺用的)
public ShopExecution() {
}//空构造器
//当店铺操作失败时使用的构造器
public ShopExecution(ShopStateEnum stateEnum) {
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
}
//当操作单个店铺成功时使用的构造器
public ShopExecution(ShopStateEnum stateEnum,Shop shop){
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
this.shop=shop;
}
//当操作多个店铺成功时使用的构造器
public ShopExecution(ShopStateEnum stateEnum,List<Shop> shopList){
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
this.shopList=shopList;
}
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 int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public Shop getShop() {
return shop;
}
public void setShop(Shop shop) {
this.shop = shop;
}
public List<Shop> getShopList() {
return shopList;
}
public void setShopList(List<Shop> shopList) {
this.shopList = shopList;
}
}
state:我们要知道这个店铺申请注册后所处于的状态,如成功、审核中等
stateInfo:对state的文字描述
count:店铺数量,因为我们有时候操作的并不是一个店铺,所以引入店铺数量
shop:操作单个店铺的实体类,主要用于增删改
listShop:操作多个店铺的实体类,主要用于查询。
我们要着重说下state和stateInfo两个属性。
我们通过枚举来完成这两个属性的赋值
首先:建立枚举类:
package storepro.enums;
public enum ShopStateEnum {
//枚举信息的注册
CHECK(0,"审核中"),OFFLINE(-1,"非法店铺"),SUCCESS(1,"操作成功"),PASS(2,"通过验证"),INNER_ERROR(-1001,"内部系统错误")
,NULL_SHOPID(-1002,"shopID为空"),NULL_SHOP(-1003,"Shop为空");
private int state;
private String stateInfo;
private ShopStateEnum(int state,String stateInfo){//构造方法来获取枚举内容。
this.state=state;
this.stateInfo=stateInfo;
}
/*
* 根据传入的state返回相应的enum值
* */
public static ShopStateEnum stateOf(int state){
for (ShopStateEnum stateEnum:values()) {//values()自动获取枚举中的所有值
if (stateEnum.getState() == state) {
return stateEnum;
}
}
return null;
}
public int getState() {
return state;
}//我们希望枚举的值由我们设定,不希望其他能改动,所以没setter方法
public String getStateInfo() {
return stateInfo;
}
}
根据枚举类定义的实例完成所有state状态和stateInfo信息存储。
这是我们再来看ShopExecution的三个构造器:
这三个构造器就是根据不同的创建情况返回不同ShopExecution。主要区别在于state的不同
//当店铺操作失败时使用的构造器
public ShopExecution(ShopStateEnum stateEnum) {
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
}
//当操作单个店铺成功时使用的构造器
public ShopExecution(ShopStateEnum stateEnum,Shop shop){
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
this.shop=shop;
}
//当操作多个店铺成功时使用的构造器
public ShopExecution(ShopStateEnum stateEnum,List<Shop> shopList){
this.state = stateEnum.getState();
this.stateInfo = stateEnum.getStateInfo();
this.shopList=shopList;
}
第一个构造器:只传入了一个参数,因为当店铺申请操作失败时我们返回这个类,然后根据他接受的stateEnum来得到失败的state码,因为操作失败,没有下一步操作,所以不需要有shop参数。
第二个构造器:因为操作成功,返回了成功的操作码,并且还需要shop实体类,完成对实体类的赋值
第三个构造器:和第二个相似,只是返回了多个shop实例