content: package com.platform.common.web.domain;
  
  import java.util.HashMap;
  import java.util.Objects;
  
  import com.platform.common.utils.StringUtils;
  
  /**
   * 操作消息提醒
   *
   * @author AllDataDC
   */
  public class AjaxResult extends HashMap<String, Object>
  {
      private static final long serialVersionUID = 1L;
  
      /** 状态码 */
      public static final String CODE_TAG = "code";
  
      /** 返回内容 */
      public static final String MSG_TAG = "msg";
  
      /** 数据对象 */
      public static final String DATA_TAG = "data";
  
      /**
       * 状态类型
       */
      public enum Type
      {
          /** 成功 */
          SUCCESS(0),
          /** 警告 */
          WARN(301),
          /** 错误 */
          ERROR(500);
          private final int value;
  
          Type(int value)
          {
              this.value = value;
          }
  
          public int value()
          {
              return this.value;
          }
      }
  
      /**
       * 初始化一个新创建的 AjaxResult 对象，使其表示一个空消息。
       */
      public AjaxResult()
      {
      }
  
      /**
       * 初始化一个新创建的 AjaxResult 对象
       *
       * @param type 状态类型
       * @param msg 返回内容
       */
      public AjaxResult(Type type, String msg)
      {
          super.put(CODE_TAG, type.value);
          super.put(MSG_TAG, msg);
      }
  
      /**
       * 初始化一个新创建的 AjaxResult 对象
       *
       * @param type 状态类型
       * @param msg 返回内容
       * @param data 数据对象
       */
      public AjaxResult(Type type, String msg, Object data)
      {
          super.put(CODE_TAG, type.value);
          super.put(MSG_TAG, msg);
          if (StringUtils.isNotNull(data))
          {
              super.put(DATA_TAG, data);
          }
      }
  
      /**
       * 返回成功消息
       *
       * @return 成功消息
       */
      public static AjaxResult success()
      {
          return AjaxResult.success("操作成功");
      }
  
      /**
       * 返回成功数据
       *
       * @return 成功消息
       */
      public static AjaxResult success(Object data)
      {
          return AjaxResult.success("操作成功", data);
      }
  
      /**
       * 返回成功消息
       *
       * @param msg 返回内容
       * @return 成功消息
       */
      public static AjaxResult success(String msg)
      {
          return AjaxResult.success(msg, null);
      }
  
      /**
       * 返回成功消息
       *
       * @param msg 返回内容
       * @param data 数据对象
       * @return 成功消息
       */
      public static AjaxResult success(String msg, Object data)
      {
          return new AjaxResult(Type.SUCCESS, msg, data);
      }
  
      /**
       * 返回警告消息
       *
       * @param msg 返回内容
       * @return 警告消息
       */
      public static AjaxResult warn(String msg)
      {
          return AjaxResult.warn(msg, null);
      }
  
      /**
       * 返回警告消息
       *
       * @param msg 返回内容
       * @param data 数据对象
       * @return 警告消息
       */
      public static AjaxResult warn(String msg, Object data)
      {
          return new AjaxResult(Type.WARN, msg, data);
      }
  
      /**
       * 返回错误消息
       *
       * @return
       */
      public static AjaxResult error()
      {
          return AjaxResult.error("操作失败");
      }
  
      /**
       * 返回错误消息
       *
       * @param msg 返回内容
       * @return 警告消息
       */
      public static AjaxResult error(String msg)
      {
          return AjaxResult.error(msg, null);
      }
  
      /**
       * 返回错误消息
       *
       * @param msg 返回内容
       * @param data 数据对象
       * @return 警告消息
       */
      public static AjaxResult error(String msg, Object data)
      {
          return new AjaxResult(Type.ERROR, msg, data);
      }
  
      /**
       * 是否为成功消息
       *
       * @return 结果
       */
      public boolean isSuccess()
      {
          return !isError();
      }
  
      /**
       * 是否为错误消息
       *
       * @return 结果
       */
      public boolean isError()
      {
          return Objects.equals(Type.ERROR.value, this.get(CODE_TAG));
      }
  
      /**
       * 方便链式调用
       *
       * @param key 键
       * @param value 值
       * @return 数据对象
       */
      @Override
      public AjaxResult put(String key, Object value)
      {
          super.put(key, value);
          return this;
      }
  }
  