// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/core/model/XxlConfProject.java
// public class XxlConfProject {
// 
//     private String appname;     // 项目AppName
//     private String title;       // 项目名称
// 
//     public String getAppname() {
//         return appname;
//     }
// 
//     public void setAppname(String appname) {
//         this.appname = appname;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/core/util/ReturnT.java
// public class ReturnT<T> {
// 
// 	public static final int SUCCESS_CODE = 200;
// 	public static final int FAIL_CODE = 500;
// 
// 	public static final ReturnT<String> SUCCESS = new ReturnT<String>(null);
// 	public static final ReturnT<String> FAIL = new ReturnT<String>(FAIL_CODE, null);
// 
// 	private int code;
// 	private String msg;
// 	private T data;
// 
// 	public ReturnT(int code, String msg) {
// 		this.code = code;
// 		this.msg = msg;
// 	}
// 	public ReturnT(T data) {
// 		this.code = SUCCESS_CODE;
// 		this.data = data;
// 	}
// 
// 
// 	public int getCode() {
// 		return code;
// 	}
// 
// 	public void setCode(int code) {
// 		this.code = code;
// 	}
// 
// 	public String getMsg() {
// 		return msg;
// 	}
// 
// 	public void setMsg(String msg) {
// 		this.msg = msg;
// 	}
// 
// 	public T getData() {
// 		return data;
// 	}
// 
// 	public void setData(T data) {
// 		this.data = data;
// 	}
// 
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/dao/XxlConfNodeDao.java
// @Mapper
// public interface XxlConfNodeDao {
// 
// 	public List<XxlConfNode> pageList(@Param("offset") int offset,
// 									  @Param("pagesize") int pagesize,
// 									  @Param("env") String env,
// 									  @Param("appname") String appname,
// 									  @Param("key") String key);
// 	public int pageListCount(@Param("offset") int offset,
// 							 @Param("pagesize") int pagesize,
// 							 @Param("env") String env,
// 							 @Param("appname") String appname,
// 							 @Param("key") String key);
// 
// 	public int delete(@Param("env") String env, @Param("key") String key);
// 
// 	public void insert(XxlConfNode xxlConfNode);
// 
// 	public XxlConfNode load(@Param("env") String env, @Param("key") String key);
// 
// 	public int update(XxlConfNode xxlConfNode);
// 	
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/dao/XxlConfProjectDao.java
// @Mapper
// public interface XxlConfProjectDao {
// 
//     public List<XxlConfProject> findAll();
// 
//     public int save(XxlConfProject xxlConfProject);
// 
//     public int update(XxlConfProject xxlConfProject);
// 
//     public int delete(@Param("appname") String appname);
// 
//     public XxlConfProject load(@Param("appname") String appname);
// 
// }


import com.xxl.conf.admin.controller.annotation.PermessionLimit;
import com.xxl.conf.admin.core.model.XxlConfProject;
import com.xxl.conf.admin.core.util.ReturnT;
import com.xxl.conf.admin.dao.XxlConfNodeDao;
import com.xxl.conf.admin.dao.XxlConfProjectDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
		// valid repeat
		XxlConfProject existProject = xxlConfProjectDao.load(xxlConfProject.getAppname());
		if (existProject != null) {
			return new ReturnT<String>(500, "Appname已存在，请勿重复添加");
		}

		int ret = xxlConfProjectDao.save(xxlConfProject);
		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
	}

	@RequestMapping("/update")
	@PermessionLimit(adminuser = true)
	@ResponseBody
	public ReturnT<String> update(XxlConfProject xxlConfProject){

		// valid
		if (StringUtils.isBlank(xxlConfProject.getAppname())) {
			return new ReturnT<String>(500, "AppName不可为空");
		}
		if (StringUtils.isBlank(xxlConfProject.getTitle())) {
			return new ReturnT<String>(500, "请输入项目名称");
		}

		int ret = xxlConfProjectDao.update(xxlConfProject);
		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
	}

	@RequestMapping("/remove")
	@PermessionLimit(adminuser = true)
	@ResponseBody
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/core/model/XxlConfProject.java
// public class XxlConfProject {
// 
//     private String appname;     // 项目AppName
//     private String title;       // 项目名称
// 
//     public String getAppname() {
//         return appname;
//     }
// 
//     public void setAppname(String appname) {
//         this.appname = appname;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/core/util/ReturnT.java
// public class ReturnT<T> {
// 
// 	public static final int SUCCESS_CODE = 200;
// 	public static final int FAIL_CODE = 500;
// 
// 	public static final ReturnT<String> SUCCESS = new ReturnT<String>(null);
// 	public static final ReturnT<String> FAIL = new ReturnT<String>(FAIL_CODE, null);
// 
// 	private int code;
// 	private String msg;
// 	private T data;
// 
// 	public ReturnT(int code, String msg) {
// 		this.code = code;
// 		this.msg = msg;
// 	}
// 	public ReturnT(T data) {
// 		this.code = SUCCESS_CODE;
// 		this.data = data;
// 	}
// 
// 
// 	public int getCode() {
// 		return code;
// 	}
// 
// 	public void setCode(int code) {
// 		this.code = code;
// 	}
// 
// 	public String getMsg() {
// 		return msg;
// 	}
// 
// 	public void setMsg(String msg) {
// 		this.msg = msg;
// 	}
// 
// 	public T getData() {
// 		return data;
// 	}
// 
// 	public void setData(T data) {
// 		this.data = data;
// 	}
// 
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/dao/XxlConfNodeDao.java
// @Mapper
// public interface XxlConfNodeDao {
// 
// 	public List<XxlConfNode> pageList(@Param("offset") int offset,
// 									  @Param("pagesize") int pagesize,
// 									  @Param("env") String env,
// 									  @Param("appname") String appname,
// 									  @Param("key") String key);
// 	public int pageListCount(@Param("offset") int offset,
// 							 @Param("pagesize") int pagesize,
// 							 @Param("env") String env,
// 							 @Param("appname") String appname,
// 							 @Param("key") String key);
// 
// 	public int delete(@Param("env") String env, @Param("key") String key);
// 
// 	public void insert(XxlConfNode xxlConfNode);
// 
// 	public XxlConfNode load(@Param("env") String env, @Param("key") String key);
// 
// 	public int update(XxlConfNode xxlConfNode);
// 	
// }
// 
// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/dao/XxlConfProjectDao.java
// @Mapper
// public interface XxlConfProjectDao {
// 
//     public List<XxlConfProject> findAll();
// 
//     public int save(XxlConfProject xxlConfProject);
// 
//     public int update(XxlConfProject xxlConfProject);
// 
//     public int delete(@Param("appname") String appname);
// 
//     public XxlConfProject load(@Param("appname") String appname);
// 
// }


// Path: xxl-conf-admin/src/main/java/com/xxl/conf/admin/controller/ProjectController.java
import com.xxl.conf.admin.controller.annotation.PermessionLimit;
import com.xxl.conf.admin.core.model.XxlConfProject;
import com.xxl.conf.admin.core.util.ReturnT;
import com.xxl.conf.admin.dao.XxlConfNodeDao;
import com.xxl.conf.admin.dao.XxlConfProjectDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;

		// valid repeat
		XxlConfProject existProject = xxlConfProjectDao.load(xxlConfProject.getAppname());
		if (existProject != null) {
			return new ReturnT<String>(500, "Appname已存在，请勿重复添加");
		}

		int ret = xxlConfProjectDao.save(xxlConfProject);
		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
	}

	@RequestMapping("/update")
	@PermessionLimit(adminuser = true)
	@ResponseBody
	public ReturnT<String> update(XxlConfProject xxlConfProject){

		// valid
		if (StringUtils.isBlank(xxlConfProject.getAppname())) {
			return new ReturnT<String>(500, "AppName不可为空");
		}
		if (StringUtils.isBlank(xxlConfProject.getTitle())) {
			return new ReturnT<String>(500, "请输入项目名称");
		}

		int ret = xxlConfProjectDao.update(xxlConfProject);
		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
	}

	@RequestMapping("/remove")
	@PermessionLimit(adminuser = true)
	@ResponseBody
	public ReturnT<String> remove(String appname){