SSM项目之商铺系统-Dto之ShopExecution的实现(七)

为了完成商铺注册,简单的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:操作多个店铺的实体类,主要用于查询。

我们要着重说下statestateInfo两个属性。

我们通过枚举来完成这两个属性的赋值

首先:建立枚举类:

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实例

猜你喜欢

转载自blog.csdn.net/Sunmeok/article/details/81294857