Browse Source

dsp素材审核

Signed-off-by: jiapeng.dong <jiapeng.dong@cloudcross.com>
jiapeng.dong 9 years ago
parent
commit
c584fe05b5

+ 80 - 79
src/main/java/com/cloudcross/ssp/model/Zone.java

@@ -12,6 +12,8 @@ public class Zone implements ISelector{
 	private String name;
 	private Long width;
 	private Long height;
+	private Long rwidth;
+	private Long rheight;
 	private Integer device;
 	private Integer position;
 	private String domain;
@@ -26,47 +28,16 @@ public class Zone implements ISelector{
 	private String industry;
 	private String default_path_small;
 	
-	public Long getSupdated() {
-		return supdated;
-	}
-	public void setSupdated(Long supdated) {
-		this.supdated = supdated;
-	}
-	public Long getSizeId() {
-		return sizeId;
-	}
-	public void setSizeId(Long sizeId) {
-		this.sizeId = sizeId;
-	}
-	public String getDefault_path() {
-		return default_path;
-	}
-	public void setDefault_path(String default_path) {
-		this.default_path = default_path;
-	}
-	public String getDefault_url() {
-		return default_url;
-	}
-	public void setDefault_url(String default_url) {
-		this.default_url = default_url;
-	}
-	public Integer getRecheck() {
-		return recheck;
-	}
-	public void setRecheck(Integer recheck) {
-		this.recheck = recheck;
-	}
-	public List<Industry> getIndustryList() {
-		return industryList;
-	}
-	public void setIndustryList(List<Industry> industryList) {
-		this.industryList = industryList;
-	}
-	public String getIndustry() {
-		return industry;
+	
+	@Override
+	public String getLabel() {
+		// TODO Auto-generated method stub
+		return this.getName();
 	}
-	public void setIndustry(String industry) {
-		this.industry = industry;
+	@Override
+	public String getValue() {
+		// TODO Auto-generated method stub
+		return String.valueOf(this.getId());
 	}
 	public Long getId() {
 		return id;
@@ -86,7 +57,6 @@ public class Zone implements ISelector{
 	public void setName(String name) {
 		this.name = name;
 	}
-	
 	public Long getWidth() {
 		return width;
 	}
@@ -99,10 +69,18 @@ public class Zone implements ISelector{
 	public void setHeight(Long height) {
 		this.height = height;
 	}
-	public Integer getStatus() {
-		return status;
+	public Long getRwidth() {
+		return rwidth;
+	}
+	public void setRwidth(Long rwidth) {
+		this.rwidth = rwidth;
+	}
+	public Long getRheight() {
+		return rheight;
+	}
+	public void setRheight(Long rheight) {
+		this.rheight = rheight;
 	}
-	
 	public Integer getDevice() {
 		return device;
 	}
@@ -115,6 +93,15 @@ public class Zone implements ISelector{
 	public void setPosition(Integer position) {
 		this.position = position;
 	}
+	public String getDomain() {
+		return domain;
+	}
+	public void setDomain(String domain) {
+		this.domain = domain;
+	}
+	public Integer getStatus() {
+		return status;
+	}
 	public void setStatus(Integer status) {
 		this.status = status;
 	}
@@ -124,35 +111,47 @@ public class Zone implements ISelector{
 	public void setUpdated(Date updated) {
 		this.updated = updated;
 	}
-
-
-	
-
-
-
-	public String getDomain() {
-		return domain;
+	public Long getSupdated() {
+		return supdated;
 	}
-	public void setDomain(String domain) {
-		this.domain = domain;
+	public void setSupdated(Long supdated) {
+		this.supdated = supdated;
 	}
-	
-	
-	
-	
-	
-	
-	@Override
-	public String toString() {
-		return "Zone [id=" + id + ", operator_id=" + operator_id + ", name="
-				+ name + ", width=" + width + ", height=" + height
-				+ ", device=" + device + ", position=" + position + ", domain="
-				+ domain + ", status=" + status + ", updated=" + updated
-				+ ", supdated=" + supdated + ", recheck=" + recheck
-				+ ", default_path=" + default_path + ", default_url="
-				+ default_url + ", sizeId=" + sizeId + ", industryList="
-				+ industryList + ", industry=" + industry
-				+ ", default_path_small=" + default_path_small + "]";
+	public Integer getRecheck() {
+		return recheck;
+	}
+	public void setRecheck(Integer recheck) {
+		this.recheck = recheck;
+	}
+	public String getDefault_path() {
+		return default_path;
+	}
+	public void setDefault_path(String default_path) {
+		this.default_path = default_path;
+	}
+	public String getDefault_url() {
+		return default_url;
+	}
+	public void setDefault_url(String default_url) {
+		this.default_url = default_url;
+	}
+	public Long getSizeId() {
+		return sizeId;
+	}
+	public void setSizeId(Long sizeId) {
+		this.sizeId = sizeId;
+	}
+	public List<Industry> getIndustryList() {
+		return industryList;
+	}
+	public void setIndustryList(List<Industry> industryList) {
+		this.industryList = industryList;
+	}
+	public String getIndustry() {
+		return industry;
+	}
+	public void setIndustry(String industry) {
+		this.industry = industry;
 	}
 	public String getDefault_path_small() {
 		return default_path_small;
@@ -161,14 +160,16 @@ public class Zone implements ISelector{
 		this.default_path_small = default_path_small;
 	}
 	@Override
-	public String getLabel() {
-		// TODO Auto-generated method stub
-		return this.getName();
-	}
-	@Override
-	public String getValue() {
-		// TODO Auto-generated method stub
-		return String.valueOf(this.getId());
+	public String toString() {
+		return "Zone [id=" + id + ", operator_id=" + operator_id + ", name="
+				+ name + ", width=" + width + ", height=" + height
+				+ ", rwidth=" + rwidth + ", rheight=" + rheight + ", device="
+				+ device + ", position=" + position + ", domain=" + domain
+				+ ", status=" + status + ", updated=" + updated + ", supdated="
+				+ supdated + ", recheck=" + recheck + ", default_path="
+				+ default_path + ", default_url=" + default_url + ", sizeId="
+				+ sizeId + ", industryList=" + industryList + ", industry="
+				+ industry + ", default_path_small=" + default_path_small + "]";
 	}
 	
 	

+ 3 - 0
src/main/java/com/cloudcross/ssp/model/mapper/dspAgent.sql.xml

@@ -70,4 +70,7 @@
 	    </if>
 	</select>
 	
+		<select id="findAllAgent" resultType="com.cloudcross.ssp.model.DspAgent">
+		select <include refid="base_column"/> from t_dsp_agent
+	</select>
 </mapper>

+ 162 - 1
src/main/java/com/cloudcross/ssp/model/mapper/dspBanner.sql.xml

@@ -3,7 +3,17 @@
 <mapper namespace="dspBannerSqlMapper">
 
 	<sql id="base_column">
-		id,dsp_id as dspId,advertiser_id as advertiserId,path,height,width,rheight,rwidth,state,memo,updated
+		id,
+		dsp_id as dspId,
+		advertiser_id as advertiserId,
+		path,
+		height,
+		width,
+		rheight,
+		rwidth,
+		state,
+		memo,
+		updated
 	</sql>
 
 	<insert id="add" parameterType="java.util.List">
@@ -71,4 +81,155 @@
 	    </if>
 	</select>
 	
+	<select id="countByParams" parameterType="java.util.Map" resultType="int">
+		select count(*) 
+		from t_dsp_banner a ,t_dsp_agent b
+		<where>
+				a.dsp_id = b.id
+			<if test="searchValue !=null">
+				and b.name like #{searchValue}
+			</if>
+			<if test="backState !=null">
+				and a.state = #{backState}
+			</if>
+		</where>
+	</select>
+	
+	<select id="findByParams" parameterType="java.util.Map" resultType="java.util.Map">
+		select a.id,a.dsp_id,a.path,a.width,a.height,a.rwidth,a.rheight,a.state,a.memo,a.updated,b.name
+		from t_dsp_banner a,t_dsp_agent b
+		<where>
+		a.dsp_id = b.id
+		<if test="searchValue !=null">
+			and b.name like #{searchValue}
+		</if>
+		<if test="backState !=null">
+			and a.state = #{backState}
+		</if>
+		</where>
+		order by a.id desc
+		limit #{pager.offset}, #{pager.limit} 
+	</select>
+	             
+	<update id="updateBackPass" parameterType="HashMap">
+		update t_dsp_banner a ,t_dsp_banner_operator b 
+		set a.state=#{state},a.updated=#{updated},
+		b.checked=0,b.supdated=#{supdated} 
+		where a.id = b.banner_id and a.id in
+		<foreach item="id" collection="auditIdList" open="(" separator=","
+			close=")">
+			#{id}
+		</foreach>
+	</update>
+	
+	<update id="updateBackNoPass" parameterType="HashMap">
+		update t_dsp_banner a ,t_dsp_banner_operator b 
+		set a.state=#{state},a.updated=#{updated},a.memo=#{memo},
+		b.checked=3,b.supdated=#{supdated} 
+		where a.id = b.banner_id and a.id in
+		<foreach item="id" collection="auditIdList" open="(" separator=","
+			close=")">
+			#{id}
+		</foreach>
+	</update>
+	
+	
+	
+	<select id="findByParamMap" parameterType="java.util.Map" resultType="java.util.Map">
+		select a.id,a.dsp_id,a.path,a.width,a.height,a.rwidth,a.rheight,a.state,a.memo,a.updated,b.name
+		from t_dsp_banner a,t_dsp_agent b
+		<where>
+		a.dsp_id = b.id
+		<if test="searchValue !=null">
+			and b.name like #{searchValue}
+		</if>
+		<if test="backState !=null">
+			and a.state = #{backState}
+		</if>
+		</where>
+	</select>
+	<!-- ssssss后台审核通过后续判断是否t_dsp_operator有没有则添加 -->
+	<select id="countByParamsOperator" parameterType="java.util.Map" resultType="int">
+		select count(*) 
+		from t_dsp_banner a 
+		INNER JOIN t_dsp_agent b on a.dsp_id = b.id
+		LEFT JOIN t_dsp_banner_operator c on a.id = c.banner_id and a.dsp_id = c.dsp_id
+		<where>
+			a.state =0 
+			<if test="zoneList.size()>0">
+				and
+			   	<foreach item="zone" collection="zoneList"
+			   		 open="(" separator="or" close=")" >
+				      a.rwidth &lt;= #{zone.rwidth} and a.rheight &lt;= #{zone.rheight}
+				</foreach>
+			</if>
+			<if test="searchValue !=null">
+				and b.name like #{searchValue}
+			</if>
+			<if test="operatorChecked !=null">
+				and c.checked = #{operatorChecked}
+			</if>
+		</where> 
+	</select>
+	
+	<select id="findByParamsOperator" parameterType="java.util.Map" resultType="java.util.Map">
+		select a.id,a.dsp_id,a.path,a.width,a.height,a.rwidth,a.rheight,a.state,a.memo,c.checked,c.supdated,b.name
+		from t_dsp_banner a 
+		INNER JOIN t_dsp_agent b on a.dsp_id = b.id
+		LEFT JOIN t_dsp_banner_operator c on a.id = c.banner_id and a.dsp_id = c.dsp_id
+		<where>
+			a.state =0
+			<if test="zoneList.size()>0">
+				and
+			   	<foreach item="zone" collection="zoneList"
+			   		 open="(" separator="or" close=")" >
+				      a.rwidth &lt;= #{zone.rwidth} and a.rheight &lt;= #{zone.rheight}
+				</foreach>
+			</if>
+			<if test="searchValue !=null">
+				and b.name like #{searchValue}
+			</if>
+			<if test="operatorChecked !=null">
+				and c.checked = #{operatorChecked}
+			</if>
+		</where>
+		order by a.id desc
+		limit #{pager.offset}, #{pager.limit} 
+	</select>
+	
+	
+	<update id="updateOperatorPass" parameterType="HashMap">
+		update t_dsp_banner a ,t_dsp_banner_operator b 
+		set a.updated=#{updated},
+		b.checked=#{checked},b.supdated=#{supdated} 
+		where a.id = b.banner_id and a.id =#{bannerId}
+	</update>
+	
+	<update id="updateOperatorNoPass" parameterType="HashMap">
+		update t_dsp_banner a ,t_dsp_banner_operator b 
+		set a.updated=#{updated},a.memo=#{memo},
+		b.checked=#{checked},b.supdated=#{supdated} 
+		where a.id = b.banner_id and a.id =#{bannerId}
+	</update>
+	
+	
+	<select id="getState" parameterType="HashMap" resultType="int">
+		select IFNULL(checked,-1) as checked from t_dsp_banner_operator
+		where operator_id=#{operatorId} and banner_id = #{bannerId}
+	</select>
+	
+	<select id="findById" parameterType="int" resultType="DspBanner">
+		select <include refid="base_column"/> from t_dsp_banner where id = #{id}
+	</select>
+	
+	<insert id="addBannerOperator" parameterType="HashMap">
+		insert t_dsp_banner_operator set 
+		operator_id = #{operatorId},
+		dsp_id = #{dspId},
+		banner_id = #{bannerId},
+		checked = 0,
+		supdated = #{supdated}
+		
+	</insert>
+	
 </mapper>

+ 5 - 1
src/main/java/com/cloudcross/ssp/model/mapper/zone.sql.xml

@@ -8,6 +8,8 @@
 		t_zone.name as name,
 		width,
 		height,
+		rwidth,
+		rheight,
 		device,
 		position,
 		status,
@@ -40,6 +42,8 @@
 		<result property="name" column="name" />
 		<result property="width" column="width" />
 		<result property="height" column="height" />
+		<result property="rwidth" column="rwidth" />
+		<result property="rheight" column="rheight" />
 		<result property="device" column="device" />
 		<result property="position" column="position" />
 		<result property="status" column="status" />
@@ -195,7 +199,7 @@
       <!-- add by Wanfu for banner-audit -->
       <select id="findByOperatorIdOperator" resultType="com.cloudcross.ssp.model.Zone" parameterType="int">
            select * from t_zone where 
-           operator_id = #{operatorId} and status != -1
+           operator_id = #{operatorId} and status != -1 and recheck=1
       </select>
       
 	

+ 3 - 0
src/main/java/com/cloudcross/ssp/service/IDspAgentService.java

@@ -65,4 +65,7 @@ public interface IDspAgentService{
 	 * @return 下一个id的值
 	 */
 	public Long selectMaxId(Map<String,Object> paramMap);
+	
+	//查找所有的dsp
+		public List<DspAgent> findAllAgent();
 }

+ 39 - 0
src/main/java/com/cloudcross/ssp/service/IDspBannerService.java

@@ -1,9 +1,11 @@
 package com.cloudcross.ssp.service;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import com.cloudcross.ssp.base.service.IDspGenericService;
+import com.cloudcross.ssp.common.utils.Pager;
 import com.cloudcross.ssp.model.DspBanner;
 
 /**
@@ -31,5 +33,42 @@ public interface IDspBannerService extends IDspGenericService<DspBanner>{
 	 * @return 符合条件的记录
 	 */
 	public List<Map<String,Object>> queryState(Map<String,Object> paramMap);
+	/**
+	 * 
+	 * 
+	 * @param paramMap
+	 * 				bannerIds
+	 * @return 云联后台符合条件的数目
+	 */
+	public int countByParams(HashMap<String, Object> paramMap);
+
+	// 符合条件的dsp创意
+	public List<Map<String, Object>> findByParams(
+			HashMap<String, Object> paramMap, Pager pager);
 	
+	//状态审核通过
+	public boolean updatePass(List<Long> auditIdList, int state);
+	//状态审核不通过
+	public boolean updateNoPass(List<Long> auditIdList, int state, String memo);
+	//查找符合条件的dsp创意(不叫page)
+	public List<Map<String, Object>> findByParamMap(Map<String, Object> paramMap);
+	/**
+	 * 
+	 * 运营商素材审核功能
+	 * @param operatorId 
+	 * */
+	public int countByParamsOperator(Long operatorId, HashMap<String, Object> paramMap);
+
+	public List<Map<String, Object>> findByParamsOpeator(
+			Long operatorId, HashMap<String, Object> paramMap, Pager pager);
+
+	public boolean updateOperatorPass(long id, int checked);
+	
+	public boolean updateOperatorNoPass(long auditIdList, int checked, String memo);
+
+	public int getState(long operatorId, long id);
+
+	public void addBannerOperator(long operatorId, long id);
+
+	public DspBanner findById(long id);
 }

+ 5 - 0
src/main/java/com/cloudcross/ssp/service/impl/DspAgentService.java

@@ -97,4 +97,9 @@ public class DspAgentService implements IDspAgentService{
 		return myBatisDao.get("dspAgentSqlMapper.selectMaxId",paramMap);
 	}
 	
+	@Override
+	public List<DspAgent> findAllAgent() {
+		
+		return myBatisDao.getList("dspAgentSqlMapper.findAllAgent");
+	}
 }

+ 146 - 0
src/main/java/com/cloudcross/ssp/service/impl/DspBannerService.java

@@ -1,5 +1,7 @@
 package com.cloudcross.ssp.service.impl;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -9,7 +11,9 @@ import org.springframework.stereotype.Service;
 
 import com.cloudcross.ssp.base.dao.GenericIBatisDao;
 import com.cloudcross.ssp.common.utils.MapBuilder;
+import com.cloudcross.ssp.common.utils.Pager;
 import com.cloudcross.ssp.model.DspBanner;
+import com.cloudcross.ssp.model.Zone;
 import com.cloudcross.ssp.service.IDspBannerService;
 
 /**
@@ -100,4 +104,146 @@ public class DspBannerService implements IDspBannerService{
 		return myBatisDao.getList("dspBannerSqlMapper.queryState",paramMap);
 	}
 
+	
+	@Override
+	public int countByParams(HashMap<String, Object> paramMap) {
+		
+		if(!paramMap.containsKey("searchValue")||paramMap.get("searchValue").equals("")){
+			paramMap.put("searchValue", null);
+				
+		}
+		if(!paramMap.containsKey("backState")||paramMap.get("backState").equals("")){
+			paramMap.put("backState", null);
+		}
+		
+		return myBatisDao.get("dspBannerSqlMapper.countByParams",paramMap);
+	}
+
+	@Override
+	public List<Map<String, Object>> findByParams(
+			HashMap<String, Object> paramMap,Pager pager) {
+			paramMap.put("pager", pager);
+		return myBatisDao.getList("dspBannerSqlMapper.findByParams", paramMap);
+	}
+
+	@Override
+	public boolean updatePass(List<Long> auditIdList, int state) {
+		Date date = new Date();
+		myBatisDao.save("dspBannerSqlMapper.updateBackPass",
+				MapBuilder.create(HashMap.class)
+					.add("auditIdList", auditIdList)
+					.add("updated", date)
+					.add("supdated", date.getTime()/1000)
+					.add("state", state).map());
+		return true;
+		
+		
+	}
+
+	@Override
+	public boolean updateNoPass(List<Long> auditIdList, int state, String memo) {
+		Date date = new Date();
+		myBatisDao.save("dspBannerSqlMapper.updateBackNoPass",
+				MapBuilder.create(HashMap.class)
+					.add("auditIdList", auditIdList)
+					.add("memo",memo)
+					.add("updated", date)
+					.add("supdated", date.getTime()/1000)
+					.add("state", state).map());
+		return true;
+		
+	}
+
+	@Override
+	public List<Map<String, Object>> findByParamMap(Map<String, Object> paramMap) {
+		
+		return myBatisDao.getList("dspBannerSqlMapper.findByParamMap", paramMap);
+	}
+
+	@Override
+	public int countByParamsOperator(Long operatorId, HashMap<String, Object> paramMap) {
+		
+		List<Zone> zoneList = myBatisDao.getList("zoneSqlMapper.findByOperatorIdOperator", operatorId);
+		paramMap.put("zoneList", zoneList);
+		if(zoneList.size()==0){
+			return 0;
+		}
+		
+		if(!paramMap.containsKey("searchValue")||paramMap.get("searchValue").equals("")){
+			paramMap.put("searchValue", null);	
+		}
+		if(!paramMap.containsKey("operatorChecked")||paramMap.get("operatorChecked").equals("")){
+			paramMap.put("operatorChecked", null);	
+		}
+		return myBatisDao.get("dspBannerSqlMapper.countByParamsOperator", paramMap);
+	}
+
+	@Override
+	public List<Map<String, Object>> findByParamsOpeator(Long operatorId,HashMap<String, Object> paramMap, Pager pager) {
+		paramMap.put("pager", pager);
+		
+		List<Zone> zoneList = myBatisDao.getList("zoneSqlMapper.findByOperatorIdOperator", operatorId);
+		paramMap.put("zoneList", zoneList);
+		if(zoneList.size()==0){
+			return new ArrayList<Map<String,Object>>();
+		}
+		
+		return myBatisDao.getList("dspBannerSqlMapper.findByParamsOperator", paramMap);
+	}
+
+	@Override
+	public boolean updateOperatorPass(long id, int checked) {
+		Date date = new Date();
+		myBatisDao.save("dspBannerSqlMapper.updateOperatorPass",
+				MapBuilder.create(HashMap.class)
+					.add("bannerId", id)
+					.add("updated", date)
+					.add("supdated", date.getTime()/1000)
+					.add("checked", checked).map());
+		return true;
+	}
+
+	@Override
+	public boolean updateOperatorNoPass(long id, int checked,
+			String memo) {
+		Date date = new Date();
+		myBatisDao.save("dspBannerSqlMapper.updateOperatorNoPass",
+				MapBuilder.create(HashMap.class)
+					.add("bannerId", id)
+					.add("memo",memo)
+					.add("updated", date)
+					.add("supdated", date.getTime()/1000)
+					.add("checked", checked).map());
+		return true;
+	}
+
+	@Override
+	public int getState(long operatorId, long id) {
+
+		return myBatisDao.get("dspBannerSqlMapper.getState", MapBuilder.create(HashMap.class)
+								.add("operatorId", operatorId)
+								.add("bannerId", id)
+								.map());
+		
+	}
+
+	@Override
+	public void addBannerOperator(long operatorId, long id) {
+		Date date = new Date();
+		long dspId = findById(id).getDspId();
+		myBatisDao.save("dspBannerSqlMapper.addBannerOperator", 
+				MapBuilder.create(HashMap.class)
+				.add("operatorId", operatorId)
+				.add("bannerId",id)
+				.add("dspId",dspId)
+				.add("supdated",date)
+				.map());
+		
+	}
+
+	@Override
+	public DspBanner findById(long id) {
+		
+		return myBatisDao.get("dspBannerSqlMapper.findById", id);
+	}
 }

+ 2 - 2
src/main/java/com/cloudcross/ssp/web/back/main/audit/AuditBannerController.java

@@ -83,7 +83,7 @@ public String list(Model model,
 	return page("banner-audit");
 }
 
-@RequestMapping("enable")
+@RequestMapping("/enable")
 public @ResponseBody String enable(Long[] id) {
 	LOG.debug("arg's value="+Arrays.toString(id));
 	if (ArrayUtils.isNotEmpty(id)) {
@@ -92,7 +92,7 @@ public @ResponseBody String enable(Long[] id) {
 	return OK;
 }
 
-@RequestMapping("disable")
+@RequestMapping("/disable")
 public @ResponseBody String disable(@RequestParam Long[] id,String memo) {
 	
 	if (ArrayUtils.isNotEmpty(id)) {

+ 142 - 0
src/main/java/com/cloudcross/ssp/web/back/main/dsp/AuditController.java

@@ -0,0 +1,142 @@
+package com.cloudcross.ssp.web.back.main.dsp;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.cloudcross.ssp.base.utils.freemarker.FreemarkerTemplateProcessor;
+import com.cloudcross.ssp.base.web.SimpleController;
+import com.cloudcross.ssp.common.consts.Status;
+import com.cloudcross.ssp.common.utils.LangUtil;
+import com.cloudcross.ssp.common.utils.Pager;
+import com.cloudcross.ssp.model.AuditBanner;
+import com.cloudcross.ssp.model.DspAgent;
+import com.cloudcross.ssp.service.IDspAdvertiserService;
+import com.cloudcross.ssp.service.IDspAgentService;
+import com.cloudcross.ssp.service.IDspBannerService;
+import com.cloudcross.ssp.web.back.main.audit.AuditBannerController;
+
+
+@Controller
+@RequestMapping("/back/main/dsp/audit")
+public class AuditController extends SimpleController {
+	
+	@Autowired
+	IDspBannerService dspBannerService;
+	@Autowired
+	IDspAgentService dspAgentService;
+	@Autowired
+	private FreemarkerTemplateProcessor templateProcessor;
+	
+	private static final Logger LOG = Logger
+			.getLogger(AuditBannerController.class);
+
+	@RequestMapping("/list")
+	public String list(Model model,
+			@RequestParam HashMap<String, Object> paramMap,
+			@RequestParam(defaultValue="1") int page) {
+		Map<String,Object> showMap = null;
+		String path;
+		String type;
+		//统计所有审核素材
+		int totalRow = dspBannerService.countByParams(paramMap);
+		
+		List<DspAgent> dspAgentList = dspAgentService.findAllAgent();
+		Pager pager = new Pager();
+		pager.setPage(page);
+		pager.setTotalRow(totalRow);
+		List<Map<String, Object>> auditList = dspBannerService.findByParams(paramMap,pager);
+		for(int i=0;i<auditList.size();i++){
+			showMap = auditList.get(i);
+			path = (String)showMap.get("path");
+			type = path.substring(path.lastIndexOf(".")+1);
+			showMap.put("type", type);
+			auditList.set(i, showMap);
+		}
+		model.addAttribute("state", paramMap.get("backState"));
+		model.addAttribute("searchValue", paramMap.get("searchValue"));
+		model.addAllAttributes(paramMap);
+		model.addAttribute("pager", pager);
+		model.addAttribute("auditList", auditList);
+		model.addAttribute("dspAgentList",dspAgentList);
+		return page("list");
+	}
+	
+	
+	@RequestMapping("/enable")
+	public @ResponseBody String enable(Long[] id) {
+		LOG.debug("arg's value="+Arrays.toString(id));
+		if (ArrayUtils.isNotEmpty(id)) {
+			dspBannerService.updatePass(LangUtil.array2List(id),Status.enable.value);
+		}
+		return OK;
+	}
+
+	@RequestMapping("/disable")
+	public @ResponseBody String disable(Long[] id,String memo) {
+		
+		if (ArrayUtils.isNotEmpty(id)) {
+			dspBannerService.updateNoPass(LangUtil.array2List(id),Status.backnopass.value,memo); 
+		}
+		return OK ;
+	}
+	
+	@RequestMapping("/auditBackDspExcel")
+	public void auditBannerExcel(HttpServletRequest request,HttpServletResponse response,
+			@RequestParam Map<String, Object> paramMap) {
+		Map<String,Object> showMap = null;
+		String path;
+		String type;
+		List<Map<String, Object>> auditIdList = dspBannerService.findByParamMap(paramMap);
+		for(int i=0;i<auditIdList.size();i++){
+			showMap = auditIdList.get(i);
+			path = (String)showMap.get("path");
+			type = path.substring(path.lastIndexOf(".")+1);
+			showMap.put("type", type);
+			auditIdList.set(i, showMap);
+		}
+		paramMap.put("auditIdList", auditIdList);
+		response.reset();
+		// Content-Type:application/vnd.ms-excel;charset=utf8或者text/xml;charset=utf8
+		response.setContentType("application/vnd.ms-excel;charset=utf8");
+		// 设置excel文件名称
+		SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
+		String fileName = "DSP素材审核" + df2.format(new Date());
+		response.setHeader("Content-Disposition", "attachment;filename="
+				+ fileName + ".xls");
+		// 需要对excel的列的总数进行指定
+		int column = 8;
+		paramMap.put("downTime", df2.format(new Date()));
+		paramMap.put("column", column);
+		paramMap.put("dataSize", (auditIdList.size() + 100));
+		String excelTemplate = templateProcessor.processTemplate(
+				"excel/auditBackDsp.ftl", paramMap);
+		try {
+			PrintWriter out = response.getWriter();
+			out.write(excelTemplate);
+			out.flush();
+			out.close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
+}

+ 168 - 0
src/main/java/com/cloudcross/ssp/web/operator/main/dsp/AuditDspController.java

@@ -0,0 +1,168 @@
+package com.cloudcross.ssp.web.operator.main.dsp;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.cloudcross.ssp.base.utils.freemarker.FreemarkerTemplateProcessor;
+import com.cloudcross.ssp.base.web.SimpleController;
+import com.cloudcross.ssp.common.consts.Status;
+import com.cloudcross.ssp.common.utils.LangUtil;
+import com.cloudcross.ssp.common.utils.Pager;
+import com.cloudcross.ssp.model.Account;
+import com.cloudcross.ssp.model.DspAgent;
+import com.cloudcross.ssp.service.IDspAgentService;
+import com.cloudcross.ssp.service.IDspBannerService;
+import com.cloudcross.ssp.web.back.main.audit.AuditBannerController;
+
+
+/**
+ * 运营商素材审核功能
+ * 
+ * */
+
+@Controller
+@RequestMapping("/operator/main/dsp/audit-dsp")
+public class AuditDspController extends SimpleController{
+	@Autowired
+	IDspBannerService dspBannerService;
+	@Autowired
+	IDspAgentService dspAgentService;
+	@Autowired
+	private FreemarkerTemplateProcessor templateProcessor;
+	
+	private static final Logger LOG = Logger
+			.getLogger(AuditBannerController.class);
+
+	@RequestMapping("/list")
+	public String list(Model model,
+			@RequestParam HashMap<String, Object> paramMap,
+			@RequestParam(defaultValue="1") int page) {
+		Map<String,Object> showMap = null;
+		String path;
+		String bannerName;
+		
+		Account account = getLoginUser();
+		Long operatorId = getLoginUser().getOperatorId();
+		paramMap.put("operatorId", operatorId);
+		
+		//统计所有审核素材
+		int totalRow = dspBannerService.countByParamsOperator(operatorId,paramMap);
+		List<DspAgent> dspAgentList = dspAgentService.findAllAgent();
+		
+		Pager pager = new Pager();
+		pager.setPage(page);
+		pager.setTotalRow(totalRow);
+		List<Map<String, Object>> auditList = dspBannerService.findByParamsOpeator(operatorId,paramMap,pager);
+		for(int i=0;i<auditList.size();i++){
+			showMap = auditList.get(i);
+			path = (String)showMap.get("path");
+			bannerName = path.substring(path.lastIndexOf("\\")+1);
+			showMap.put("bannerName", bannerName);
+			showMap.put("name",showMap.get("name"));
+			auditList.set(i, showMap);
+		}
+		model.addAllAttributes(paramMap);
+		model.addAttribute("pager", pager);
+		model.addAttribute("auditList", auditList);
+		model.addAttribute("dspAgentList",dspAgentList);
+		return page("list");
+	}
+	
+	
+	@RequestMapping("/enable")
+	public @ResponseBody String enable(Long[] id) {
+		LOG.debug("arg's value="+Arrays.toString(id));
+		Long operatorId = getLoginUser().getOperatorId();
+		if (ArrayUtils.isNotEmpty(id)) {
+			for(long i:id){
+				int checked = dspBannerService.getState(operatorId,i);
+				if(checked ==-1){
+					dspBannerService.addBannerOperator(operatorId,i);
+				}else{
+					dspBannerService.updateOperatorPass(i,Status.backpass.value);
+				}
+			}
+			
+		}
+		return OK;
+	}
+
+	@RequestMapping("/disable")
+	public @ResponseBody String disable(Long[] id,String memo) {
+		Long operatorId = getLoginUser().getOperatorId();
+		if (ArrayUtils.isNotEmpty(id)) {
+			for(long i:id){
+				int checked = dspBannerService.getState(operatorId,i);	
+				if(checked !=-1){
+					dspBannerService.updateOperatorNoPass(i,Status.backnopass.value,memo);
+				}
+			}
+			
+		}
+		return OK ;
+	}
+	
+	@RequestMapping("/auditDspExcel")
+	public void auditBannerExcel
+	(HttpServletRequest request,
+			HttpServletResponse response,
+			@RequestParam Map<String, Object> paramMap) {
+		Map<String,Object> showMap = null;
+		String path;
+		String type;
+		String bannerName;
+		List<Map<String, Object>> auditList = dspBannerService.findByParamMap(paramMap);
+		for(int i=0;i<auditList.size();i++){
+			showMap = auditList.get(i);
+			path = (String)showMap.get("path");
+			bannerName = path.substring(path.lastIndexOf("\\")+1);
+			showMap.put("bannerName", bannerName);
+			showMap.put("name",showMap.get("name"));
+			auditList.set(i, showMap);
+		}
+		paramMap.put("auditList", auditList);
+		response.reset();
+		// Content-Type:application/vnd.ms-excel;charset=utf8或者text/xml;charset=utf8
+		response.setContentType("application/vnd.ms-excel;charset=utf8");
+		// 设置excel文件名称
+		SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
+		String fileName = "DSP素材审核" + df2.format(new Date());
+		response.setHeader("Content-Disposition", "attachment;filename="
+				+ fileName + ".xls");
+		// 需要对excel的列的总数进行指定
+		int column = 10;
+		paramMap.put("downTime", df2.format(new Date()));
+		paramMap.put("column", column);
+		paramMap.put("dataSize", (auditList.size() + 100));
+		String excelTemplate = templateProcessor.processTemplate(
+				"excel/auditOperatorDsp.ftl", paramMap);
+		try {
+			PrintWriter out = response.getWriter();
+			out.write(excelTemplate);
+			out.flush();
+			out.close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
+}

+ 102 - 0
src/main/resources/template/excel/auditBackDsp.ftl

@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
+ xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
+ xmlns:html="http://www.w3.org/TR/REC-html40">
+ <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
+  <Author>adnetwork</Author>
+  <LastAuthor>adnetwork</LastAuthor>
+  <Created>2014-10-15T06:05:44Z</Created>
+  <Version>14.00</Version>
+ </DocumentProperties>
+ <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
+  <AllowPNG/>
+ </OfficeDocumentSettings>
+ <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
+  <WindowHeight>5130</WindowHeight>
+  <WindowWidth>16155</WindowWidth>
+  <WindowTopX>240</WindowTopX>
+  <WindowTopY>45</WindowTopY>
+  <ProtectStructure>False</ProtectStructure>
+  <ProtectWindows>False</ProtectWindows>
+ </ExcelWorkbook>
+ <Styles>
+  <Style ss:ID="Default" ss:Name="Normal">
+   <Alignment ss:Vertical="Center"/>
+   <Borders/>
+   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
+   <Interior/>
+   <NumberFormat/>
+   <Protection/>
+  </Style>
+  <Style ss:ID="s63" ss:Name="超链接">
+   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#0000FF"
+    ss:Underline="Single"/>
+  </Style>
+  <Style ss:ID="s65">
+   <NumberFormat ss:Format="Short Date"/>
+  </Style>
+  <Style ss:ID="s66">
+   <NumberFormat ss:Format="0%"/>
+  </Style>
+ </Styles>
+ <Worksheet ss:Name="Sheet1">
+  <Table ss:ExpandedColumnCount="${column!}" ss:ExpandedRowCount="<#if dataSize??>${dataSize+3}<#else>3</#if>" x:FullColumns="1"
+   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
+   <Column ss:AutoFitWidth="0" ss:Width="114"/>
+   <Column ss:AutoFitWidth="0" ss:Width="95.25"/>
+   <Column ss:AutoFitWidth="0" ss:Width="93" ss:Span="1"/>
+   <Column ss:Index="5" ss:AutoFitWidth="0" ss:Width="74.25"/>
+   <Column ss:Width="63"/>
+   <Row>
+    <Cell ss:MergeAcross="9"><Data ss:Type="String">Dsp素材审核: </Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:MergeAcross="9"><Data ss:Type="String">下载日期:${downTime!} </Data></Cell>
+   </Row>
+   <Row>
+   <Cell><Data ss:Type="String">id</Data></Cell>
+	    <Cell><Data ss:Type="String">创意</Data></Cell>
+	   	<Cell><Data ss:Type="String">类型</Data></Cell>
+	    <Cell><Data ss:Type="String">来源</Data></Cell>
+	    <Cell><Data ss:Type="String">尺寸</Data></Cell>
+	    <Cell><Data ss:Type="String">创意比率</Data></Cell>
+	   	<Cell><Data ss:Type="String">状态</Data></Cell>
+	   	<Cell><Data ss:Type="String">最后更新时间</Data></Cell>
+   </Row>
+<#if auditIdList ??>
+     <#list auditIdList as auditBanner>   
+		   <Row>
+		   <Cell><Data ss:Type="String">${auditBanner.id!}</Data></Cell>
+		   	 <Cell><Data ss:Type="String">${auditBanner.path!}</Data></Cell>
+	   		<Cell><Data ss:Type="String">${auditBanner.type!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.name!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.width!}x${auditBanner.height!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.rwidth!}:${auditBanner.rheight!}</Data></Cell>
+	   		<Cell><Data ss:Type="String"><#if auditBanner.state == 0>未审核<#else>已审核</#if></Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.updated?datetime}</Data></Cell>
+		   </Row>
+	 </#list>
+  </#if>   
+  </Table>
+  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
+   <PageSetup>
+    <Header x:Margin="0.3"/>
+    <Footer x:Margin="0.3"/>
+    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
+   </PageSetup>
+   <Selected/>
+   <Panes>
+    <Pane>
+     <Number>3</Number>
+     <ActiveRow>7</ActiveRow>
+     <ActiveCol>8</ActiveCol>
+    </Pane>
+   </Panes>
+   <ProtectObjects>False</ProtectObjects>
+   <ProtectScenarios>False</ProtectScenarios>
+  </WorksheetOptions>
+ </Worksheet>
+</Workbook>

+ 102 - 0
src/main/resources/template/excel/auditOperatorDsp.ftl

@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
+ xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
+ xmlns:html="http://www.w3.org/TR/REC-html40">
+ <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
+  <Author>adnetwork</Author>
+  <LastAuthor>adnetwork</LastAuthor>
+  <Created>2014-10-15T06:05:44Z</Created>
+  <Version>14.00</Version>
+ </DocumentProperties>
+ <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
+  <AllowPNG/>
+ </OfficeDocumentSettings>
+ <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
+  <WindowHeight>5130</WindowHeight>
+  <WindowWidth>16155</WindowWidth>
+  <WindowTopX>240</WindowTopX>
+  <WindowTopY>45</WindowTopY>
+  <ProtectStructure>False</ProtectStructure>
+  <ProtectWindows>False</ProtectWindows>
+ </ExcelWorkbook>
+ <Styles>
+  <Style ss:ID="Default" ss:Name="Normal">
+   <Alignment ss:Vertical="Center"/>
+   <Borders/>
+   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#000000"/>
+   <Interior/>
+   <NumberFormat/>
+   <Protection/>
+  </Style>
+  <Style ss:ID="s63" ss:Name="超链接">
+   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="11" ss:Color="#0000FF"
+    ss:Underline="Single"/>
+  </Style>
+  <Style ss:ID="s65">
+   <NumberFormat ss:Format="Short Date"/>
+  </Style>
+  <Style ss:ID="s66">
+   <NumberFormat ss:Format="0%"/>
+  </Style>
+ </Styles>
+ <Worksheet ss:Name="Sheet1">
+  <Table ss:ExpandedColumnCount="${column!}" ss:ExpandedRowCount="<#if dataSize??>${dataSize+3}<#else>3</#if>" x:FullColumns="1"
+   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
+   <Column ss:AutoFitWidth="0" ss:Width="114"/>
+   <Column ss:AutoFitWidth="0" ss:Width="95.25"/>
+   <Column ss:AutoFitWidth="0" ss:Width="93" ss:Span="1"/>
+   <Column ss:Index="5" ss:AutoFitWidth="0" ss:Width="74.25"/>
+   <Column ss:Width="63"/>
+   <Row>
+    <Cell ss:MergeAcross="9"><Data ss:Type="String">Dsp素材审核: </Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:MergeAcross="9"><Data ss:Type="String">下载日期:${downTime!} </Data></Cell>
+   </Row>
+   <Row>
+   <Cell><Data ss:Type="String">id</Data></Cell>
+	    <Cell><Data ss:Type="String">创意</Data></Cell>
+	   	<Cell><Data ss:Type="String">类型</Data></Cell>
+	    <Cell><Data ss:Type="String">来源</Data></Cell>
+	    <Cell><Data ss:Type="String">尺寸</Data></Cell>
+	    <Cell><Data ss:Type="String">创意比率</Data></Cell>
+	   	<Cell><Data ss:Type="String">状态</Data></Cell>
+	   	<Cell><Data ss:Type="String">最后更新时间</Data></Cell>
+   </Row>
+<#if auditList ??>
+     <#list auditList as auditBanner>   
+		   <Row>
+		   <Cell><Data ss:Type="String">${auditBanner.id!}</Data></Cell>
+		   	 <Cell><Data ss:Type="String">${auditBanner.path!}</Data></Cell>
+	   		<Cell><Data ss:Type="String">${auditBanner.type!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.name!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.width!}x${auditBanner.height!}</Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.rwidth!}:${auditBanner.rheight!}</Data></Cell>
+	   		<Cell><Data ss:Type="String"><#if auditBanner.state == 0>未审核<#else>已审核</#if></Data></Cell>
+	    	<Cell><Data ss:Type="String">${auditBanner.updated?datetime}</Data></Cell>
+		   </Row>
+	 </#list>
+  </#if>   
+  </Table>
+  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
+   <PageSetup>
+    <Header x:Margin="0.3"/>
+    <Footer x:Margin="0.3"/>
+    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
+   </PageSetup>
+   <Selected/>
+   <Panes>
+    <Pane>
+     <Number>3</Number>
+     <ActiveRow>7</ActiveRow>
+     <ActiveCol>8</ActiveCol>
+    </Pane>
+   </Panes>
+   <ProtectObjects>False</ProtectObjects>
+   <ProtectScenarios>False</ProtectScenarios>
+  </WorksheetOptions>
+ </Worksheet>
+</Workbook>

+ 99 - 0
src/main/webapp/WEB-INF/pages/back/main/dsp/audit/list.ftl

@@ -0,0 +1,99 @@
+<@override name="head">
+<title>素材审核</title>
+<script type="text/javascript" src="${ctx}/assets/js/lib/bootstrap.min.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/lib/bootbox.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/common/table.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/back/auditDsp.js"></script>
+</@override> 
+<@override name="body">
+<div id=content_bg>
+	<#include "/operator/main/public-head.ftl">
+	<div id= "pagecontent">
+		<div id="content">
+		    <div id="navDiv">
+				<ul id="navDiv_ul">
+					<li><i class="icon-home"></i></li>
+					<li><a href="${ctx}/back/main/dashboard">首页</a></li>
+					<li><i class="icon-angle-right"></i></li>
+				    <li class="navDiv_currentLi">dsp素材审核</li>
+				</ul>  
+ 			</div>
+ 			<form id="myform" action="${ctx}/back/main/dsp/audit/list" method="post">
+ 				<input type="hidden" id="status" name="backState" value='${state!}'/>
+	 			<div id="selectBar_statusOther" class="selectBar">
+		 			<span>状态:</span>
+					<a value="">全部</a>
+					<a value="1">未审核</a>
+					<a value="2">审核未通过</a>
+					<a value="0">审核通过</a>
+				</div>
+				<div id="navButtons_other">
+					<div id="button">					
+						<a class="btn2" id="all-btn-pass">批量通过</a>
+						<a class="btn2" id="all-btn-unpass">批量不通过</a>
+					</div>
+					<div id="searchValueDiv">
+						<input type="hidden" id="page" name="page" value="${pager.page!}"/>
+						<input id="searchValue" type="text" name="searchValue" value="${searchValue!}" tabindex="1"/>
+						<input id="serachData_img" type="submit" value=""/>
+					</div>
+				</div>
+				<table border="1" class="tableFig">
+					<thead>
+						<tr class="theadTr">
+							<th class="theadTh" style="width:5%;"><div class="checkboxStyleTh"></div></th>
+							<th class="theadTh" style="width:5%;">ID</th>
+							<th class="theadTh" style="width:15%;">创意</th>
+							<th class="theadTh" style="width:5%;">创意类型</th>
+							<th class="theadTh" style="width:10%;">来源</th>
+							<th class="theadTh" style="width:5%;">尺寸</th>
+							<th class="theadTh" style="width:5%;">创意比率</th>
+							<th class="theadTh" style="width:5%;">状态</th>
+							<th class="theadTh" style="width:15%;">最后更新时间</th>
+							<th class="theadTh" style="width:20%;">操作</th>
+						</tr>
+				    </thead>
+				    <tbody>
+						<#if auditList ??>
+				        <#list auditList as audit>
+				        <tr id="tbodyTr">
+							<td class="tbodyTd"><div class="checkboxStyleTd" id="${audit.id!}"></div></td>
+							<td class="tbodyTd">${audit.id!}</td>
+							<td class="tbodyTd"><img src='${audit.path!}'></td>
+							<td class="tbodyTd">${audit.type!}</td>
+							<td class="tbodyTd">${audit.name!}</td>
+							<td class="tbodyTd">${audit.width!}x${audit.height!}</td>
+							<td class="tbodyTd">${audit.rwidth!}:${audit.rheight!}</td>
+							<td class="tbodyTd"><#if audit.state==-1||audit.state==1>未审核<#else>已审核</#if></td>
+							<td class="tbodyTd">${audit.updated!}</td>
+							<td class="tbodyTd">
+								<div id="listButtons">
+									<#if audit.state==0>
+					            	<a class="btn-audit btn-auditChange">审核通过</a>
+					            	<#else>
+					            	<a id="btn-pass" value="${audit.id!}" class="btn-audit">审核通过</a>
+					            	</#if>
+					            	<#if audit.state==2>
+					                <a class="btn-audit btn-auditChange">审核不通过</a>
+					                <#else>
+					                <a id="btn-unpass" value="${audit.id!}" class="btn-audit">审核不通过</a>
+					                </#if>
+								</div>
+							</td>
+				        </tr>
+				        </#list>
+						</#if>
+				    </tbody>
+				</table>
+				<div id="exportReport">
+					<a id="exportExcel" class="btn_export" href="${ctx}/back/main/dsp/audit/auditBackDspExcel">导出Excel</a>
+				</div>
+				<div id="pageDiv">
+					<#include "/common/pagination/simple.ftl"/>
+				</div>
+			</form>
+		</div>
+	</div>
+</div>
+</@override>
+<@extends name="/common/simple.ftl"/>

+ 100 - 0
src/main/webapp/WEB-INF/pages/operator/main/dsp/audit-dsp/list.ftl

@@ -0,0 +1,100 @@
+<@override name="head">
+<title>素材审核</title>
+<script type="text/javascript" src="${ctx}/assets/js/lib/bootstrap.min.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/lib/bootbox.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/common/table.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/operator/auditDsp.js"></script>
+</@override> 
+<@override name="body">
+<div id=content_bg>
+	<#include "/operator/main/public-head.ftl">
+	<div id= "pagecontent">
+		<div id="content">
+		    <div id="navDiv">
+				<ul id="navDiv_ul">
+					<li><i class="icon-home"></i></li>
+					<li><a href="${ctx}/operator/main/dashboard">首页</a></li>
+					<li><i class="icon-angle-right"></i></li>
+				    <li class="navDiv_currentLi">dsp素材审核</li>
+				</ul>  
+ 			</div>
+ 			<form id="myform" action="${ctx}/operator/main/dsp/audit-dsp/list" method="post">
+ 				<input type="hidden" id="status" name="operatorChecked" value='${operatorChecked!}'/>
+ 				<input type="hidden" id="operatorId" name="operatorId" value="${userSession.operatorId!}"/>
+	 			<div id="selectBar_statusOther" class="selectBar">
+		 			<span>状态:</span>
+					<a value="">全部</a>
+					<a value="1">审核通过</a>
+					<a value="2">审核未通过</a>
+					<a value="0">未审核</a>
+				</div>
+				<div id="navButtons_other">
+					<div id="button">					
+						<a class="btn2" id="all-btn-pass">批量通过</a>
+						<a class="btn2" id="all-btn-unpass">批量不通过</a>
+					</div>
+					<div id="searchValueDiv">
+						<input type="hidden" id="page" name="page" value="${pager.page!}"/>
+						<input id="searchValue" type="text" name="searchValue" value="${searchValue!}" tabindex="1"/>
+						<input id="serachData_img" type="submit" value=""/>
+					</div>
+				</div>
+				<table border="1" class="tableFig">
+					<thead>
+						<tr class="theadTr">
+							<th class="theadTh" style="width:5%;"><div class="checkboxStyleTh"></div></th>
+							<th class="theadTh" style="width:5%;">ID</th>
+							<th class="theadTh" style="width:15%;">创意</th>
+							<th class="theadTh" style="width:10%;">创意名称</th>
+							<th class="theadTh" style="width:10%;">来源</th>
+							<th class="theadTh" style="width:5%;">尺寸</th>
+							<th class="theadTh" style="width:10%;">创意比率</th>
+							<th class="theadTh" style="width:5%;">状态</th>
+							<th class="theadTh" style="width:15%;">最后更新时间</th>
+							<th class="theadTh" style="width:20%;">操作</th>
+						</tr>
+				    </thead>
+				    <tbody>
+						<#if auditList ??>
+				        <#list auditList as audit>
+				        <tr id="tbodyTr">
+							<td class="tbodyTd"><div class="checkboxStyleTd" id="${audit.id!}"></div></td>
+							<td class="tbodyTd">${audit.id!}</td>
+							<td class="tbodyTd"><img src='${audit.path!}'></td>
+							<td class="tbodyTd">${audit.bannerName!}</td>
+							<td class="tbodyTd">${audit.name!}</td>
+							<td class="tbodyTd">${audit.width!}x${audit.height!}</td>
+							<td class="tbodyTd">${audit.rwidth!}:${audit.rheight!}</td>
+							<td class="tbodyTd"><#if audit.checked==-1||audit.checked==0>未审核<#else>已审核</#if></td>
+							<td class="tbodyTd">${audit.supdated!}</td>
+							<td class="tbodyTd">
+								<div id="listButtons">
+									<#if audit.checked==1>
+					            	<a class="btn-audit btn-auditChange">审核通过</a>
+					            	<#else>
+					            	<a id="btn-pass" value="${audit.id!}" class="btn-audit">审核通过</a>
+					            	</#if>
+					            	<#if audit.checked==2>
+					                <a class="btn-audit btn-auditChange">审核不通过</a>
+					                <#else>
+					                <a id="btn-unpass" value="${audit.id!}" class="btn-audit">审核不通过</a>
+					                </#if>
+								</div>
+							</td>
+				        </tr>
+				        </#list>
+						</#if>
+				    </tbody>
+				</table>
+				<div id="exportReport">
+					<a id="exportExcel" class="btn_export" href="${ctx}/operator/main/dsp/audit-dsp/auditDspExcel">导出Excel</a>
+				</div>
+				<div id="pageDiv">
+					<#include "/common/pagination/simple.ftl"/>
+				</div>
+			</form>
+		</div>
+	</div>
+</div>
+</@override>
+<@extends name="/common/simple.ftl"/>

+ 47 - 0
src/main/webapp/assets/js/back/auditDsp.js

@@ -0,0 +1,47 @@
+$(document).ready(function(){
+	var ctx = $("#ctx").val();//获取服务器地址
+	
+	/***************************    素材审核列表页    ***************************/
+
+ 	//状态全部、开启、停用
+ 	if($("#status").val() == ""){
+ 		$("#selectBar_statusOther a:first").addClass("selectBar_change");
+	}
+ 	$("#selectBar_statusOther a").each(function(){
+ 		var value = $(this).attr("value");
+ 		if($("#status").val() == value){
+ 			$(this).addClass("selectBar_change").siblings('.selectBar_change').removeClass('selectBar_change');
+ 		}
+ 	});
+ 	$("#selectBar_statusOther a").click(function(){
+ 		$("#status").val($(this).attr("value"));
+ 		refreshData();
+ 	});
+ 
+	//通过,或不通过
+	$("#btn-pass,#btn-unpass").click(function(){
+		var url = "";var type = "";
+		if($(this).attr("id") == "btn-pass"){
+			url = ctx+"/back/main/dsp/audit/enable";
+			type = "pass";
+		}else if($(this).attr("id") == "btn-unpass"){
+			url = ctx+"/back/main/dsp/audit/disable";
+			type = "unpass";
+		}
+		singlePassOrUnpassOper($(this),url,type);
+	});
+			
+	//批量通过,或不通过
+	$("#all-btn-pass,#all-btn-unpass").click(function(){
+		var url = "";var type = "";
+		if($(this).attr("id") == "all-btn-pass"){
+			url = ctx+"/back/main/dsp/audit/enable";
+			type = "pass";
+		}else if($(this).attr("id") == "all-btn-unpass"){
+			url = ctx+"/back/main/dsp/audit/disable";
+			type = "unpass";
+		}
+		batchPassOrUnpassOper($(this),url,type);
+	});
+	
+});

+ 47 - 0
src/main/webapp/assets/js/operator/auditDsp.js

@@ -0,0 +1,47 @@
+$(document).ready(function(){
+	var ctx = $("#ctx").val();//获取服务器地址
+	
+	/***************************    素材审核列表页    ***************************/
+
+ 	//状态全部、开启、停用
+ 	if($("#status").val() == ""){
+ 		$("#selectBar_statusOther a:first").addClass("selectBar_change");
+	}
+ 	$("#selectBar_statusOther a").each(function(){
+ 		var value = $(this).attr("value");
+ 		if($("#status").val() == value){
+ 			$(this).addClass("selectBar_change").siblings('.selectBar_change').removeClass('selectBar_change');
+ 		}
+ 	});
+ 	$("#selectBar_statusOther a").click(function(){
+ 		$("#status").val($(this).attr("value"));
+ 		refreshData();
+ 	});
+ 
+	//通过,或不通过
+	$("#btn-pass,#btn-unpass").click(function(){
+		var url = "";var type = "";
+		if($(this).attr("id") == "btn-pass"){
+			url = ctx+"/operator/main/dsp/audit-dsp/enable";
+			type = "pass";
+		}else if($(this).attr("id") == "btn-unpass"){
+			url = ctx+"/operator/main/dsp/audit-dsp/disable";
+			type = "unpass";
+		}
+		singlePassOrUnpassOper($(this),url,type);
+	});
+			
+	//批量通过,或不通过
+	$("#all-btn-pass,#all-btn-unpass").click(function(){
+		var url = "";var type = "";
+		if($(this).attr("id") == "all-btn-pass"){
+			url = ctx+"/operator/main/dsp/audit-dsp/enable";
+			type = "pass";
+		}else if($(this).attr("id") == "all-btn-unpass"){
+			url = ctx+"/operator/main/dsp/audit-dsp/disable";
+			type = "unpass";
+		}
+		batchPassOrUnpassOper($(this),url,type);
+	});
+	
+});