albertshaw 8 år sedan
förälder
incheckning
d4092f147a

+ 13 - 0
schema/20170711-banners.sql

@@ -0,0 +1,13 @@
+CREATE TABLE `banners` (
+  `id` bigint(18) NOT NULL COMMENT '主键',
+  `sign` varchar(100) DEFAULT NULL COMMENT '广告图位置标识',
+  `text` varchar(255) DEFAULT NULL COMMENT '图片描述',
+  `imgUrl` varchar(255) DEFAULT NULL COMMENT '图片url',
+  `url` varchar(255) DEFAULT NULL COMMENT '广告图跳转链接地址',
+  `width` int(5) DEFAULT NULL COMMENT '广告图宽度',
+  `height` int(5) DEFAULT NULL COMMENT '广告图高度',
+  `start_date` datetime DEFAULT NULL COMMENT '开始日期',
+  `end_date` datetime DEFAULT NULL COMMENT '结束日期',
+  PRIMARY KEY (`id`),
+  KEY `key` (`sign`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

+ 78 - 0
src/main/java/com/goafanti/banners/controller/BannersApiController.java

@@ -0,0 +1,78 @@
+package com.goafanti.banners.controller;
+
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.Assert;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.goafanti.banners.enums.BannersType;
+import com.goafanti.banners.service.BannersService;
+import com.goafanti.common.bo.Result;
+import com.goafanti.common.controller.BaseApiController;
+import com.goafanti.common.enums.AttachmentType;
+import com.goafanti.common.model.Banners;
+import com.goafanti.common.utils.StringUtils;
+import com.goafanti.core.mybatis.JDBCIdGenerator;
+
+@Controller
+@RequestMapping(value = "/api/admin/banners")
+public class BannersApiController extends BaseApiController {
+	@Resource
+	BannersService	bannersService;
+	@Autowired
+	JDBCIdGenerator	idGenerator;
+
+	@RequestMapping(value = "/upload", method = RequestMethod.POST)
+	public Result upload(String sign, HttpServletRequest req) {
+		Assert.isTrue(StringUtils.isNotBlank(sign) && BannersType.containsType(sign), "广告图位置标示不正确。");
+		Result res = res();
+		Calendar c = Calendar.getInstance();
+		res.data(handleFile(res, false, req, AttachmentType.BANNERS_PIC.getCode(), String.valueOf(c.get(Calendar.YEAR)),
+				String.valueOf(c.get(Calendar.MONTH)), String.valueOf(c.get(Calendar.DATE)),
+				idGenerator.generateId().toString()));
+		return res;
+	}
+
+	@RequestMapping(value = "/save", method = RequestMethod.POST)
+	public Result save(@Valid Banners banners, BindingResult bindingResult) {
+		Assert.notNull(banners, "广告图参数不正确");
+		Assert.isTrue(StringUtils.isNotBlank(banners.getSign()) && BannersType.containsType(banners.getSign()),
+				"广告图位置标示不正确。");
+		Assert.isTrue(!bindingResult.hasFieldErrors(),
+				bindingResult.hasFieldErrors() ? bindingResult.getFieldError().getDefaultMessage() : "");
+		Result res = res();
+		if (banners.getId() == null) {
+			banners.setId(idGenerator.generateId());
+			res.data(bannersService.insertBanner(banners));
+		} else {
+			res.data(bannersService.updateBanner(banners));
+		}
+		return res;
+	}
+
+	@RequestMapping(value = "/list", method = RequestMethod.GET)
+	public Result portalBannersList(String key, String pageNo, String pageSize) {
+		Assert.isTrue(StringUtils.isNotBlank(key) && BannersType.containsType(key), "广告图位置标示不正确。");
+		return res().data(bannersService.findBannersList(key, getPageNo(pageNo), getPageSize(pageSize)));
+	}
+
+	@RequestMapping(value = "/keys", method = RequestMethod.GET)
+	public Result portalBannersKeys() {
+		Map<String, String> types = new HashMap<>();
+		for (BannersType type : BannersType.values()) {
+			types.put(type.getKey(), type.getDesc());
+		}
+		return res().data(types);
+	}
+
+}

+ 61 - 0
src/main/java/com/goafanti/banners/enums/BannersType.java

@@ -0,0 +1,61 @@
+package com.goafanti.banners.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum BannersType {
+	SHOU_YE("SHOU_YE", "首页广告图"),
+	JI_SHU_JIAO_YI("JI_SHU_JIAO_YI", "技术交易首页广告图"),
+	DA_KA_SHUO_1("DA_KA_SHUO_1", "大咖说头部广告图"),
+	DA_KA_SHUO_2("DA_KA_SHUO_2", "大咖说明星广告图"),
+	DA_KA_SHUO_3("DA_KA_SHUO_3", "大咖说活动广告图"),
+	KE_JI_MING_XING("KE_JI_MING_XING", "科技明星广告图"),
+	KE_JI_JIANG_TANG("KE_JI_JIANG_TANG", "科技讲堂广告图"),
+	HUO_DONG_QUAN("HUO_DONG_QUAN", "科技讲堂广告图"),
+	HUO_DONG_XIANG_QING("HUO_DONG_XIANG_QING", "活动详情广告图"),
+	JIAN_SHE_BING_TUAN("JIAN_SHE_BING_TUAN", "建设兵团广告图"),
+	GUO_JI_YE_WU("GUO_JI_YE_WU", "国际业务广告图"),
+	FU_WU_HUI("FU_WU_HUI", "服务汇首页广告图"),
+	GAO_QI_REN_DING("GAO_QI_REN_DING", "高企认定广告图"),
+	ZHI_SHI_CHAN_QUAN_FU_WU("ZHI_SHI_CHAN_QUAN_FU_WU", "知识产权服务广告图"),
+	ZHI_SHI_CHAN_QUAN_SHEN_QING("ZHI_SHI_CHAN_QUAN_SHEN_QING", "知识产权申请广告图"),
+	ZHUAN_LI_YUN_YING("ZHUAN_LI_YUN_YING", "专利运营广告图"),
+	ZHI_SHI_CHAN_QUAN_GUAN_BIAO("ZHI_SHI_CHAN_QUAN_GUAN_BIAO", "知识产权贯标广告图"),
+	JI_SHU_PING_GU("JI_SHU_PING_GU", "技术评估广告图"),
+	CE_YUAN_DI("CE_YUAN_DI", "策源地广告图"),
+	CHUANG_YE_QUAN("CHUANG_YE_QUAN", "创业圈广告图"),
+	JIN_RONG_QUAN("JIN_RONG_QUAN", "金融圈广告图");
+
+	private String							key;
+	private String							desc;
+
+	private static Map<String, BannersType>	types	= new HashMap<String, BannersType>();
+
+	private BannersType(String code, String desc) {
+		this.key = code;
+		this.desc = desc;
+	}
+
+	static {
+		for (BannersType value : BannersType.values()) {
+			types.put(value.getKey(), value);
+		}
+	}
+
+	public static BannersType getField(String code) {
+		return types.get(code);
+	}
+
+	public static boolean containsType(String code) {
+		return types.containsKey(code);
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 62 - 0
src/main/java/com/goafanti/banners/service/BannersService.java

@@ -0,0 +1,62 @@
+package com.goafanti.banners.service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.goafanti.common.dao.BannersMapper;
+import com.goafanti.common.model.Banners;
+import com.goafanti.common.utils.LoggerUtils;
+import com.goafanti.core.mybatis.BaseMybatisDao;
+
+@Service
+@Transactional
+public class BannersService extends BaseMybatisDao<BannersMapper> {
+	@Autowired
+	BannersMapper				bannersMapper;
+
+	private static final Logger	logger	= LoggerFactory.getLogger(BannersService.class);
+
+	public int insertBanner(Banners banners) {
+		return bannersMapper.insertSelective(banners);
+	}
+
+	public int updateBanner(Banners banners) {
+		return bannersMapper.updateByPrimaryKeySelective(banners);
+	}
+
+	public List<Banners> findBannersList(String sign, Integer pageNo, Integer pageSize) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("sign", sign);
+		params.put("pageSize", pageSize);
+		params.put("pageNo", pageNo);
+		return bannersMapper.findList(params);
+	}
+
+	public List<Banners> previewPortalBanners(String key) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("key", key);
+		return bannersMapper.findList(params);
+	}
+
+	@Cacheable(value = "BannersListCache", key = "'BannersList:Key:'+#key")
+	public List<Banners> findPortalBanners(String key) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("key", key);
+		return bannersMapper.findList(params);
+	}
+
+	@CacheEvict(value = "BannersListCache", key = "'BannersList:Key:'+#key")
+	public void cleanList(String key) {
+		LoggerUtils.debug(logger, "清除广告图列表缓存:[%s]", key);
+	}
+
+}

+ 4 - 0
src/main/java/com/goafanti/common/controller/BaseApiController.java

@@ -212,4 +212,8 @@ public class BaseApiController extends BaseController {
 			return 10;
 		}
 	}
+
+	protected Result res() {
+		return new Result();
+	}
 }

+ 22 - 0
src/main/java/com/goafanti/common/dao/BannersMapper.java

@@ -0,0 +1,22 @@
+package com.goafanti.common.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import com.goafanti.common.model.Banners;
+
+public interface BannersMapper {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(Banners record);
+
+    int insertSelective(Banners record);
+
+    Banners selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(Banners record);
+
+    int updateByPrimaryKey(Banners record);
+
+	List<Banners> findList(Map<String, Object> params);
+}

+ 34 - 14
src/main/java/com/goafanti/common/enums/AttachmentType.java

@@ -4,25 +4,45 @@ import java.util.HashMap;
 import java.util.Map;
 
 public enum AttachmentType {
-	COPYRIGHT_AUTH("copyright_auth", "软著证书"), COPYRIGHT_APPLY("copyright_apply", "软著申请书"), DEFAULT("attachment", "附件"),
-	PATENT_PRORY_STATEMENT("patent_prory_statement", "专利代理委托书"), PATENT_WRITING("patent_writing", "专利稿件"),
-	AUTHORIZATION_NOTICE("authorization_notice", "授权通知书 "), PATENT_CERTIFICATE("patent_certificate", "专利证书"), 
+	COPYRIGHT_AUTH("copyright_auth", "软著证书"),
+	COPYRIGHT_APPLY("copyright_apply", "软著申请书"),
+	DEFAULT("attachment", "附件"),
+	PATENT_PRORY_STATEMENT("patent_prory_statement", "专利代理委托书"),
+	PATENT_WRITING("patent_writing", "专利稿件"),
+	AUTHORIZATION_NOTICE("authorization_notice", "授权通知书 "),
+	PATENT_CERTIFICATE("patent_certificate", "专利证书"),
 	PATENT_TEMPLATE("patent_template", "专利代理委托书模版"),
-	INSTITUTION("institution", "研发部门制度"), PROTOCOL("protocol", "产学研技术中心协议"), PROOF("proof", "研发活动立项证明材料"),
-	ACTIVITY_COST_ACCOUNT("activity_cost_account", "研发活动费用台帐"), TECH_PRODUCT("tech_product", "高新技术产品台帐"),
-	PROPERTY_RIGHT("property_right", "知识产权证书"), ACHIEVEMENT("achievement", "科技成果附件"), RATEPAY("ratepay", "企业纳税申报表"),
-	FINANCE("finance", "企业财务报表"), ROSTER("roster", "企业花名册"), SOCIAL_SECURITY("social_security", "企业社保情况表"), 
-	HONOR("honor", "荣誉及其他证明材料"), LAST_YEAR_RATEPAY("last_year_ratepay", "上年度纳税申报表"), TECH_PROJECT("tech_project", "科技项目申报材料"),
-	STANDARD("standard", "标准制定附件"), MANUSCRIPT("manuscript", "知识产权稿件"), ORGCODE("orgcode", "组织结构代码证"), LICENCE("licence", "营业执照"),
-	DEMAND_PICTURE("demand_picture", "科技需求图片资料"), DEMAND_TEXT_FILE("demand_text_file", "科技需求文本文件资料"),
-	ACHIEVEMENT_TECHNICAL_PICTURE("achievement_technical_picture", "科技成果技术图片"), 
+	INSTITUTION("institution", "研发部门制度"),
+	PROTOCOL("protocol", "产学研技术中心协议"),
+	PROOF("proof", "研发活动立项证明材料"),
+	ACTIVITY_COST_ACCOUNT("activity_cost_account", "研发活动费用台帐"),
+	TECH_PRODUCT("tech_product", "高新技术产品台帐"),
+	PROPERTY_RIGHT("property_right", "知识产权证书"),
+	ACHIEVEMENT("achievement", "科技成果附件"),
+	RATEPAY("ratepay", "企业纳税申报表"),
+	FINANCE("finance", "企业财务报表"),
+	ROSTER("roster", "企业花名册"),
+	SOCIAL_SECURITY("social_security", "企业社保情况表"),
+	HONOR("honor", "荣誉及其他证明材料"),
+	LAST_YEAR_RATEPAY("last_year_ratepay", "上年度纳税申报表"),
+	TECH_PROJECT("tech_project", "科技项目申报材料"),
+	STANDARD("standard", "标准制定附件"),
+	MANUSCRIPT("manuscript", "知识产权稿件"),
+	ORGCODE("orgcode", "组织结构代码证"),
+	LICENCE("licence", "营业执照"),
+	DEMAND_PICTURE("demand_picture", "科技需求图片资料"),
+	DEMAND_TEXT_FILE("demand_text_file", "科技需求文本文件资料"),
+	ACHIEVEMENT_TECHNICAL_PICTURE("achievement_technical_picture", "科技成果技术图片"),
 	ACHIEVEMENT_MATURITY_PICTURE("achievement_maturity_picture", "科技成果成熟度资料图片"),
 	ACHIEVEMENT_MATURITY_TEXT_FILE("achievement_maturity_text_file", "科技成果成熟度资料文本文件"),
 	ACHIEVEMENT_TECH_PLAN("achievement_tech_plan", "科技成果技术方案文件"),
 	ACHIEVEMENT_BUSINESS_PLAN("achievement_business_plan", "科技成果商业计划书"),
-	DEMAND_TEMPLATE("demand_template", "科技需求批量导入模板"), ACHIEVEMENT_TEMPLATE("achievement_template", "科技成果批量导入模板"), 
-	DEMAND_ORDER_FILE("demand_order_file", "科技需求意向单/交易单附件"), LECTURE_PICTURE("lecture_picture","科技讲堂展示图片")
-	;
+	DEMAND_TEMPLATE("demand_template", "科技需求批量导入模板"),
+	ACHIEVEMENT_TEMPLATE("achievement_template", "科技成果批量导入模板"),
+	DEMAND_ORDER_FILE("demand_order_file", "科技需求意向单/交易单附件"),
+	BANNERS_PIC("banners", "广告图片"),
+	NEWS_PIC("news", "新闻图片"),
+	LECTURE_PICTURE("lecture_picture", "科技讲堂展示图片");
 
 	private AttachmentType(String code, String desc) {
 		this.code = code;

+ 141 - 0
src/main/java/com/goafanti/common/mapper/BannersMapper.xml

@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.goafanti.common.dao.BannersMapper">
+  <resultMap id="BaseResultMap" type="com.goafanti.common.model.Banners">
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="sign" jdbcType="VARCHAR" property="sign" />
+    <result column="text" jdbcType="VARCHAR" property="text" />
+    <result column="imgUrl" jdbcType="VARCHAR" property="imgurl" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="width" jdbcType="INTEGER" property="width" />
+    <result column="height" jdbcType="INTEGER" property="height" />
+    <result column="start_date" jdbcType="TIMESTAMP" property="startDate" />
+    <result column="end_date" jdbcType="TIMESTAMP" property="endDate" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    id, sign, text, imgUrl, url, width, height, start_date, end_date
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from banners
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from banners
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.goafanti.common.model.Banners">
+    insert into banners (id, sign, text, 
+      imgUrl, url, width, 
+      height, start_date, end_date
+      )
+    values (#{id,jdbcType=BIGINT}, #{sign,jdbcType=VARCHAR}, #{text,jdbcType=VARCHAR}, 
+      #{imgurl,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{width,jdbcType=INTEGER}, 
+      #{height,jdbcType=INTEGER}, #{startDate,jdbcType=TIMESTAMP}, #{endDate,jdbcType=TIMESTAMP}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.Banners">
+    insert into banners
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="sign != null">
+        sign,
+      </if>
+      <if test="text != null">
+        text,
+      </if>
+      <if test="imgurl != null">
+        imgUrl,
+      </if>
+      <if test="url != null">
+        url,
+      </if>
+      <if test="width != null">
+        width,
+      </if>
+      <if test="height != null">
+        height,
+      </if>
+      <if test="startDate != null">
+        start_date,
+      </if>
+      <if test="endDate != null">
+        end_date,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="sign != null">
+        #{sign,jdbcType=VARCHAR},
+      </if>
+      <if test="text != null">
+        #{text,jdbcType=VARCHAR},
+      </if>
+      <if test="imgurl != null">
+        #{imgurl,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="width != null">
+        #{width,jdbcType=INTEGER},
+      </if>
+      <if test="height != null">
+        #{height,jdbcType=INTEGER},
+      </if>
+      <if test="startDate != null">
+        #{startDate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="endDate != null">
+        #{endDate,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.Banners">
+    update banners
+    <set>
+      <if test="sign != null">
+        sign = #{sign,jdbcType=VARCHAR},
+      </if>
+      <if test="text != null">
+        text = #{text,jdbcType=VARCHAR},
+      </if>
+      <if test="imgurl != null">
+        imgUrl = #{imgurl,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="width != null">
+        width = #{width,jdbcType=INTEGER},
+      </if>
+      <if test="height != null">
+        height = #{height,jdbcType=INTEGER},
+      </if>
+      <if test="startDate != null">
+        start_date = #{startDate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="endDate != null">
+        end_date = #{endDate,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.Banners">
+    update banners
+    set sign = #{sign,jdbcType=VARCHAR},
+      text = #{text,jdbcType=VARCHAR},
+      imgUrl = #{imgurl,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
+      width = #{width,jdbcType=INTEGER},
+      height = #{height,jdbcType=INTEGER},
+      start_date = #{startDate,jdbcType=TIMESTAMP},
+      end_date = #{endDate,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 16 - 0
src/main/java/com/goafanti/common/mapper/BannersMapperExt.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.goafanti.common.dao.BannersMapper">
+	<select id="findList" resultMap="BaseResultMap">
+		select
+		<include refid="Base_Column_List" />
+		from banners where 1=1 
+		<if test="sign != null">
+			and sign = #{sign,jdbcType=VARCHAR}
+		</if>
+		order by id desc
+		<if test="pageNo != null and pageSize != null">
+		limit #{pageNo,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER}
+		</if>
+	</select>
+</mapper>

+ 130 - 0
src/main/java/com/goafanti/common/model/Banners.java

@@ -0,0 +1,130 @@
+package com.goafanti.common.model;
+
+import java.util.Date;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Size;
+
+public class Banners {
+	/**
+	 * 主键
+	 */
+	private Long	id;
+
+	/**
+	 * 广告图位置标识
+	 */
+	private String	sign;
+
+	/**
+	 * 图片描述
+	 */
+	@Size(min = 0, max = 255)
+	private String	text;
+
+	/**
+	 * 图片url
+	 */
+	@Size(min = 0, max = 255)
+	private String	imgurl;
+
+	/**
+	 * 广告图跳转链接地址
+	 */
+	@Size(min = 0, max = 255)
+	private String	url;
+
+	/**
+	 * 广告图宽度
+	 */
+	@Max(value = 99999)
+	private Integer	width;
+
+	/**
+	 * 广告图高度
+	 */
+	@Max(value = 99999)
+	private Integer	height;
+
+	/**
+	 * 开始日期
+	 */
+	private Date	startDate;
+
+	/**
+	 * 结束日期
+	 */
+	private Date	endDate;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getSign() {
+		return sign;
+	}
+
+	public void setSign(String sign) {
+		this.sign = sign;
+	}
+
+	public String getText() {
+		return text;
+	}
+
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	public String getImgurl() {
+		return imgurl;
+	}
+
+	public void setImgurl(String imgurl) {
+		this.imgurl = imgurl;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public Integer getWidth() {
+		return width;
+	}
+
+	public void setWidth(Integer width) {
+		this.width = width;
+	}
+
+	public Integer getHeight() {
+		return height;
+	}
+
+	public void setHeight(Integer height) {
+		this.height = height;
+	}
+
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+}

+ 51 - 29
src/main/webapp/WEB-INF/html/test.html

@@ -14,18 +14,20 @@
       font-size: 14px;
       font-family: "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
     }
-    
+
     #root {
       margin: 30px;
     }
-    
+
     label {
       display: block;
       margin: 6px 0;
     }
+
     textarea {
       display: block;
     }
+
     #submit {
       padding: 6px 30px;
       border-radius: 3px;
@@ -33,6 +35,7 @@
       border: 1px;
       color: #666;
     }
+
     #submit::hover {
       padding: 6px 30px;
       border-radius: 3px;
@@ -40,6 +43,7 @@
       border: 1px;
       color: #666;
     }
+
     #submit::active {
       padding: 6px 30px;
       border-radius: 3px;
@@ -71,17 +75,16 @@
     <label>
       <span>params json data:</span>
       <textarea id="data" cols="30" rows="10">
-      
-	{
-	"mobile": "137",
-	"password": "123456"
-	
-}
+        {
+          "mobile": "137",
+          "password": "123456"
+        }
       </textarea>
     </label>
     <br>
     <div>
       <button id="submit">submit</button>
+      <input id="fileupload" type="file" name="file">
     </div>
     <br>
     <label>
@@ -92,28 +95,47 @@
     </label>
   </div>
   <script src="//cdn.bootcss.com/jquery/3.1.0/jquery.js"></script>
-  <script> 
-    (function ($) {
-      var loading = false;
-      $('#submit').on('click', function () {
-        if (loading) {
-          return;
-        }
-        var url = '/' + $('#context').val() + $('#path').val();
-        var data = $.trim($('#data').val());
-        data = data ? JSON.parse($('#data').val()) : {};
-        loading = true;
-        $.ajax({
-          url: url,
-          method: $('#method').val() || 'get',
-          data: data
-        }).done(function (res) {
-          $('#result').val(JSON.stringify(res));
-        }).always(function () {
-          loading = false;
+  <script src="//cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js"></script>
+  <script src="//cdn.bootcss.com/blueimp-file-upload/9.18.0/js/jquery.fileupload.min.js"></script>
+  <script>
+    var loading = false;
+    $('#submit').on('click', function () {
+      if (loading) {
+        return;
+      }
+      var url = '/' + $('#context').val() + $('#path').val();
+      var data = $.trim($('#data').val());
+      data = data ? JSON.parse($('#data').val()) : {};
+      loading = true;
+      $.ajax({
+        url: url,
+        method: $('#method').val() || 'get',
+        data: data
+      }).done(function (res) {
+        $('#result').val(JSON.stringify(res));
+      }).always(function () {
+        loading = false;
+      });
+    });
+    $('#fileupload').fileupload({
+      type: $('#method').val() || 'post',
+      url: '/' + $('#context').val() + $('#path').val(),
+      dataType: 'json',
+      formData: $.trim($('#data').val()) ? JSON.parse($('#data').val()) : {},
+      add: function (e, data) {
+        data.context = $('<button/>').text('Upload')
+          .appendTo(document.body)
+          .click(function () {
+            data.context = $('<p/>').text('Uploading...').replaceAll($(this));
+            data.submit();
+          });
+      },
+      done: function (e, data) {
+        $.each(data.result.files, function (index, file) {
+          $('<p/>').text(file.name).appendTo(document.body);
         });
-      })
-    })(jQuery);
+      }
+    });
   </script>
 </body>