Browse Source

后台添加dsp账户管理

ying.rong 9 years ago
parent
commit
0ec7e5a3a8

+ 98 - 0
src/main/java/com/cloudcross/ssp/common/utils/TokenUtil.java

@@ -0,0 +1,98 @@
+package com.cloudcross.ssp.common.utils;
+
+import java.security.MessageDigest;
+import java.util.Random;
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import sun.misc.BASE64Encoder;
+
+public class TokenUtil {
+	
+	public static String getToken(){
+		String ret = "";
+		try {
+			String secret = getRandomString(24);
+			// 24字节密钥key,3倍DES密钥长度
+			byte[] tripleKey = getKeyBytes(secret);
+			// 生成密钥 
+			SecretKey secretKey = new SecretKeySpec(tripleKey, "DESede");
+			String transformation = "DESede/CBC/PKCS5Padding";
+			Cipher cipher = Cipher.getInstance(transformation);     
+			// CBC方式的初始化向量 
+	   		byte[] iv = new byte[] { 93, 81, 122, 33, 47, 50, 17, 103 };    
+			IvParameterSpec ivparam = new IvParameterSpec(iv);     
+			// 加密 
+	   		cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivparam);    
+			// 当前时间字符串
+			String currentTime = System.currentTimeMillis()+"";
+			byte[] encriptText = cipher.doFinal(currentTime.getBytes());
+			// Hash算法 
+	   		MessageDigest sha = MessageDigest.getInstance("SHA-1");    
+			sha.update(encriptText);
+			// 返回其 16 进制字符串
+			ret = bytesToHexString(sha.digest());
+		} catch (Exception e) {
+			System.out.print(e.getMessage());
+		} 
+		return ret;
+	}
+		
+	
+	/**
+	 * 获取随机的字符串
+	 * @param length 字符串长度
+	 * @return
+	 */
+	public static String getRandomString(int length){
+		String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  
+	    Random random = new Random();  
+	    StringBuffer sb = new StringBuffer();  
+	    for(int i = 0 ; i < length; ++i){  
+	    	int number = random.nextInt(62);//[0,62)  
+	        sb.append(str.charAt(number));  
+	    }
+	    return sb.toString();
+	}
+	
+	/**   
+	 * 检查密钥长度,如不足24位,则加0x00补齐   
+	 *    
+	 * @param keyString   
+	 * @return   
+	 */
+	public static byte[] getKeyBytes(String keyString){
+		byte[] b = new byte[24];
+		byte[] key = keyString.getBytes();
+	   	int count = keyString.getBytes().length;
+	   	for (int i = 0; i < count; i++) {
+			b[i] = key[i];   
+		}   
+		for (int i = count; i < 24; i++) {
+			b[i] = 0x20;   
+		}
+		return b;
+	}
+	
+	/** 
+	 * 把字节数组转换成16进制字符串
+	 * 
+	 * @param bArray
+	 * @return
+	 */
+	public static String bytesToHexString(byte[] bArray) {
+		StringBuffer sb = new StringBuffer(bArray.length);
+		String sTemp;
+		for (int i = 0; i < bArray.length; i++) {  
+			sTemp = Integer.toHexString(0xFF & bArray[i]);
+			if (sTemp.length() < 2)	sb.append(0);
+			sb.append(sTemp.toUpperCase());
+		}
+		return sb.toString();
+	}
+	
+	public static void main(String[] args) {
+		System.err.println(getToken());
+	}
+}

+ 64 - 28
src/main/java/com/cloudcross/ssp/model/DspAgent.java

@@ -1,13 +1,7 @@
 package com.cloudcross.ssp.model;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.cloudcross.ssp.common.utils.FieldInfo;
 
 /**
  * 创建人:rongying
@@ -24,6 +18,18 @@ public class DspAgent implements Serializable {
 	
 	private String name;//dsp账户名
 	
+	private String companyName;//公司注册名
+	
+	private String homepage;//网址
+	
+	private String contacts;//联系人
+	
+	private String tel;//电话
+
+	private String email;//电子邮件
+	
+	private String memo;//备注
+	
 	private String ip;//ip地址
 	
 	private Long port;//端口
@@ -54,6 +60,54 @@ public class DspAgent implements Serializable {
 		this.name = name;
 	}
 	
+	public String getCompanyName() {
+		return companyName;
+	}
+
+	public void setCompanyName(String companyName) {
+		this.companyName = companyName;
+	}
+
+	public String getHomepage() {
+		return homepage;
+	}
+
+	public void setHomepage(String homepage) {
+		this.homepage = homepage;
+	}
+
+	public String getContacts() {
+		return contacts;
+	}
+
+	public void setContacts(String contacts) {
+		this.contacts = contacts;
+	}
+
+	public String getTel() {
+		return tel;
+	}
+
+	public void setTel(String tel) {
+		this.tel = tel;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
+
 	public String getIp() {
 		return ip;
 	}
@@ -81,29 +135,11 @@ public class DspAgent implements Serializable {
 	@Override
 	public String toString() {
 		return "DspAgent [id=" + id + ", token=" + token + ", name=" + name + ","
-				+ " ip=" + ip + ", port=" + port + " updated=" + updated + "]";
+				+ " companyName=" + companyName + ", homepage=" + homepage + ","
+				+ " contacts=" + contacts + ", tel=" + tel + ", email=" + email + ","
+				+ " memo=" + memo + ", ip=" + ip + ", port=" + port + ","
+				+ " updated=" + updated + "]";
 	}
 	
-	/**
-	 * 组装t_dsp_agent表结构
-	 * @return
-	 */
-	public static Map<String,FieldInfo> getFieldInfoForDspAgent(){
-		Map<String,FieldInfo> map = new HashMap<String,FieldInfo>();
-		String[] columnNames = {"id","token","name","ip","port"};
-		String[] dataTypes= {"Long","String","String","String","Long"};
-		int[] maxLengths = {11,255,255,255,11};
-		for (int i = 0, l = columnNames.length; i<l; i++) {
-			FieldInfo field = new FieldInfo();
-			field.setColumnName(columnNames[i]);
-			field.setIsNull("NO");
-			field.setDataType(dataTypes[i]);
-			field.setMaxLength(maxLengths[i]);
-			field.setPointNum(0);
-			map.put(columnNames[i], field);
-		}
-		return map;
-	}
-
 }
 

+ 45 - 19
src/main/java/com/cloudcross/ssp/model/mapper/dspAgent.sql.xml

@@ -3,34 +3,60 @@
 <mapper namespace="dspAgentSqlMapper">
 
 	<sql id="base_column">
-		id,token,name,ip,port,updated
+		id,token,name,company_name as companyName,homepage,contacts,tel,email,memo,ip,port,updated
 	</sql>
 
-	<insert id="add" parameterType="java.util.List">
-		insert into t_dsp_agent(token,name,ip,port,updated) values
-		<foreach collection="dspAgentList" item="item" index="index" separator=",">
-	    	( #{item.token},#{item.name}, #{item.ip}, #{item.port}, NOW() )
-        </foreach>
+	<insert id="add" parameterType="com.cloudcross.ssp.model.DspAgent">
+		insert into t_dsp_agent(token,name,company_name,homepage,contacts,tel,email,memo,ip,port,updated) values
+	    ( #{token}, #{name}, #{companyName}, #{homepage}, #{contacts}, #{tel}, #{email}, #{memo}, #{ip}, #{port}, NOW() )
 	</insert>
 	
-	<update id="update" parameterType="java.util.List">
-	 	<foreach collection="dspAgentList" item="item" index="index" open="" close="" separator=";">
-	        update t_dsp_agent set token = #{item.token}, name = #{item.name},ip = #{item.ip},port = #{item.port},updated = NOW()
-	        where id = #{item.id}
-         </foreach>
+	<update id="edit" parameterType="com.cloudcross.ssp.model.DspAgent">
+		update t_dsp_agent
+		<set>
+			<if test="name != null and name != ''">
+				name = #{name},
+			</if>
+			<if test="companyName != null and companyName != ''">
+				company_name = #{companyName},
+			</if>
+			<if test="homepage != null and homepage != ''">
+				homepage = #{homepage},
+			</if>
+			<if test="contacts != null and contacts != ''">
+				contacts = #{contacts},
+			</if>
+			<if test="tel != null and tel != ''">
+				tel = #{tel},
+			</if>
+			<if test="email != null and email != ''">
+				email = #{email},
+			</if>
+			<if test="memo != null and memo !=''">
+				memo = #{memo},
+			</if>
+			<if test="ip != null and ip !=''">
+				ip = #{ip},
+			</if>
+			<if test="port != null and port !=''">
+				port = #{port},
+			</if>
+			updated = NOW()
+		</set>
+		where id=#{id}
 	</update>
 	
-	<select id="getAll" parameterType="java.util.Map" resultType="com.cloudcross.ssp.model.DspAgent">
-		select <include refid="base_column"/> from t_dsp_agent
+	<select id="selectAllDspName" parameterType="java.util.Map" resultType="com.cloudcross.ssp.model.DspAgent">
+		select id,name from t_dsp_agent 
+		<if test="value != null and value != '' ">
+	    	where name like #{value}
+	    </if>
 	</select>
 	
-	<select id="get" parameterType="java.util.List" resultType="com.cloudcross.ssp.model.DspAgent">
+	<select id="selectDspAgentById" resultType="com.cloudcross.ssp.model.DspAgent">
 		select 
 		<include refid="base_column"/>
-		from t_dsp_agent where id in
-		<foreach item="id" collection="idList" open="(" separator="," close=")">
-			#{id}
-		</foreach>
+		from t_dsp_agent where id = #{id}
 	</select>
 	
 	<select id="isCheck" parameterType="com.cloudcross.ssp.model.DspAgent" resultType="java.lang.Integer">
@@ -38,7 +64,7 @@
 	</select>
 	
 	<select id="selectMaxId" parameterType="java.util.Map" resultType="java.lang.Long">
-		select id from t_dsp_agent where token = #{token} and name = #{name}
+		select id from t_dsp_agent where name = #{name}
 		<if test="dspId != null and dspId != '' ">
 	    	and id != #{dspId}
 	    </if>

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

@@ -1,8 +1,8 @@
 package com.cloudcross.ssp.service;
 
+import java.util.List;
 import java.util.Map;
 
-import com.cloudcross.ssp.base.service.IDspGenericService;
 import com.cloudcross.ssp.model.DspAgent;
 
 /**
@@ -11,7 +11,42 @@ import com.cloudcross.ssp.model.DspAgent;
  * dsp账户服务接口
  */
 
-public interface IDspAgentService extends IDspGenericService<DspAgent>{
+public interface IDspAgentService{
+	
+	/**
+	 * 获取所有dsp名称
+	 * @param paramMap
+	 * 			dsp账户名称  
+	 * @return 符合条件的列表记录
+	 */
+	public List<DspAgent> getAllDspName(Map<String,Object> paramMap);
+	
+	/**
+	 * 根据id获取dsp账户信息
+	 * 
+	 * @param id
+	 * 			dsp账户id
+	 * @return 符合条件的列表记录
+	 */
+	public DspAgent getDspAgentById(Long id);
+	
+	/**
+	 * 添加dsp账户
+	 * 
+	 * @param dspAgent
+	 * 				实体对象
+	 * @return
+	 */
+	public boolean addDspAgent(DspAgent dspAgent);
+	
+	/**
+	 * 编辑dsp账户
+	 * 
+	 * @param dspAgent
+	 * 				实体对象
+	 * @return
+	 */
+	public boolean editDspAgent(DspAgent dspAgent);
 	
 	/**
 	 * 验证dsp账户是否符合
@@ -30,5 +65,4 @@ public interface IDspAgentService extends IDspGenericService<DspAgent>{
 	 * @return 下一个id的值
 	 */
 	public Long selectMaxId(Map<String,Object> paramMap);
-	
 }

+ 33 - 40
src/main/java/com/cloudcross/ssp/service/impl/DspAgentService.java

@@ -1,6 +1,5 @@
 package com.cloudcross.ssp.service.impl;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -8,7 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 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.SqlHelper;
 import com.cloudcross.ssp.model.DspAgent;
 import com.cloudcross.ssp.service.IDspAgentService;
 
@@ -23,60 +22,54 @@ public class DspAgentService implements IDspAgentService{
 	
 	@Autowired
 	private GenericIBatisDao myBatisDao;
-
+	
 	/**
-	 * 批量添加dsp账户
+	 * 获取所有dsp名称
 	 * 
-	 * @param list
-	 *            实体对象
-	 * @return <code>true</code>代表成功,否则代表失败。
+	 * @return 符合条件的列表记录
 	 */
 	@Override
-	public boolean add(List<DspAgent> list) {
-		myBatisDao.save("dspAgentSqlMapper.add", MapBuilder.create(HashMap.class)
-				.add("dspAgentList",list).map());
-		return true;
+	public DspAgent getDspAgentById(Long id){
+		// TODO Auto-generated method stub
+		return myBatisDao.get("dspAgentSqlMapper.selectDspAgentById", id);
 	}
 	
 	/**
-	 * 批量编辑dsp账户
-	 * 
-	 * @param list
-	 *            实体对象
-	 * @return <code>true</code>代表成功,否则代表失败。
+	 * 获取所有dsp名称
+	 * @param paramMap
+	 * 			dsp账户名称 
+	 * @return 符合条件的列表记录
 	 */
 	@Override
-	public boolean update(List<DspAgent> list) {
-		myBatisDao.save("dspAgentSqlMapper.update", MapBuilder.create(HashMap.class)
-				.add("dspAgentList",list).map());
-		return true;
+	public List<DspAgent> getAllDspName(Map<String,Object> paramMap) {
+		// TODO Auto-generated method stub
+		String searchValue = SqlHelper.doLike(paramMap.get("dspName"));
+		paramMap.put("value", searchValue);
+		return myBatisDao.getList("dspAgentSqlMapper.selectAllDspName", paramMap);
 	}
-
+	
 	/**
-	 * 获取所有dsp账户
+	 * 添加dsp账户
 	 * 
-	 * @param map
-	 *            实体对象
-	 * @return 符合条件的列表记录
+	 * @param dspAgent
+	 * 				实体对象
+	 * @return
 	 */
-	@Override
-	public List<DspAgent> getAll(Map<String, Object> map) {
-		return myBatisDao.getList("dspAgentSqlMapper.getAll", map);
+	public boolean addDspAgent(DspAgent dspAgent){
+		myBatisDao.save("dspAgentSqlMapper.add", dspAgent);
+		return true;
 	}
-
+	
 	/**
-	 * 根据id获取对应的dsp账户
+	 * 编辑dsp账户
 	 * 
-	 * @param map
-	 *            实体对象
-	 * @return 符合条件的列表记录
+	 * @param dspAgent
+	 * 				实体对象
+	 * @return
 	 */
-	@Override
-	public List<DspAgent> get(Map<String, Object> map) {
-		@SuppressWarnings("unchecked")
-		List<Long> idList = (List<Long>) map.get("idList");
-		return myBatisDao.getList("dspAgentSqlMapper.get", MapBuilder.create(HashMap.class)
-				.add("idList",idList).map());
+	public boolean editDspAgent(DspAgent dspAgent){
+		myBatisDao.save("dspAgentSqlMapper.edit", dspAgent);
+		return true;
 	}
 
 	/**
@@ -103,5 +96,5 @@ public class DspAgentService implements IDspAgentService{
 		// TODO Auto-generated method stub
 		return myBatisDao.get("dspAgentSqlMapper.selectMaxId",paramMap);
 	}
-
+	
 }

+ 147 - 0
src/main/java/com/cloudcross/ssp/web/back/main/dsp/DspAgentController.java

@@ -0,0 +1,147 @@
+package com.cloudcross.ssp.web.back.main.dsp;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.mail.internet.HeaderTokenizer.Token;
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.cloudcross.ssp.base.web.SimpleController;
+import com.cloudcross.ssp.common.utils.Common;
+import com.cloudcross.ssp.common.utils.TokenUtil;
+import com.cloudcross.ssp.model.DspAgent;
+import com.cloudcross.ssp.model.Log;
+import com.cloudcross.ssp.service.IDspAgentService;
+import com.cloudcross.ssp.service.ILogService;
+
+/**
+ * 
+ * 类名称:DspAccountController
+ * 类描述:dsp账户
+ * 创建人:rongying
+ * 创建时间:2015.12.16
+ *
+ */
+
+@Controller("back.dspAgentController")
+@RequestMapping("/back/main/dsp/dsp-agent")
+public class DspAgentController extends SimpleController{
+	
+	@SuppressWarnings("unused")
+	private static final Logger LOG = Logger.getLogger(DspAgentController.class);
+	
+	@Autowired
+	private IDspAgentService dspAgentService;
+	
+	@Autowired
+	private ILogService logService;
+	
+	@RequestMapping("/list")
+	public String list(Model model,@RequestParam Map<String,Object> paramMap) {
+		model.addAllAttributes(paramMap);
+		List<DspAgent> dspAgentList = new ArrayList<DspAgent>();
+		dspAgentList = dspAgentService.getAllDspName(paramMap);
+		model.addAttribute("dspAgentList", dspAgentList);
+		return page("list");
+	}
+	
+	/**
+	 * 根据id查找dsp账户对象
+	 * 
+	 * @param dspId
+	 * 			dsp账户id
+	 * @return
+	 */
+	@RequestMapping("/getDspAgentById")
+	public @ResponseBody DspAgent getDspAgentById(Model model,Long dspId){
+		DspAgent dspAgent = new DspAgent();
+		dspAgent = dspAgentService.getDspAgentById(dspId);
+		return dspAgent;
+	}
+	
+	/**
+	 * 添加dsp账户
+	 * @param paramMap 参数,json数组
+	 * @return
+	 */
+	@RequestMapping("/save")
+	public String save(Model model, HttpServletRequest request, @ModelAttribute("form") DspAgent dspAgent){
+		if ((dspAgent.getId()) == 0) {
+			dspAgent.setToken(TokenUtil.getToken());//获取token令牌
+			dspAgentService.addDspAgent(dspAgent);
+		} else {
+			dspAgentService.editDspAgent(dspAgent);
+		}
+		Log log = new Log();
+		//对应模块
+		log.setModule("DspAgent");
+		//对应表名
+		log.setTableName("t_dsp_agent");
+		if ((dspAgent.getId()) == 0) {
+			Long id = this.getDataMaxId(dspAgent.getName(), null);
+        	//增加对应的id
+			log.setRecordId(id);
+			//对应操作类型
+			log.setActionType("新增");
+			//对应的操作
+			log.setAction("新增了一个dsp账户:" + dspAgent.getName());
+		}else{
+			//增加对应的id
+			log.setRecordId(dspAgent.getId());
+			//对应操作类型
+			log.setActionType("编辑");
+			//对应的操作
+			log.setAction("编辑原来的dsp账户为:" + dspAgent.getName());
+		}
+		//下面这几个字段目前后端数据没有得到。所以仅作测试用!
+		log.setActionTime("100");
+		log.setAccountId(new Long(getLoginUser().getId()));
+		log.setUserIp(Common.toIpAddr(request));
+		log.setAccountName(getLoginUser().getAccountName());
+		logService.add(log);
+		// 跳转到管理页面。
+		return redirect(page("list"));
+	}
+	
+	/**
+	 * 根据id查找dsp账户对象
+	 * 
+	 * @param dspId
+	 * 			dsp账户id
+	 * @return
+	 */
+	@RequestMapping("/isRepeat")
+	public @ResponseBody boolean isRepeat(String name, Long dspId){
+		boolean isRepeat = false;
+		Long id = this.getDataMaxId(name, dspId);
+		if(id != null){
+			isRepeat = true;
+		}
+		return isRepeat;
+	}
+	
+	/**
+	 * 获取最大的id,根据条件查询
+	 * @param name
+	 * @param dspId
+	 * @return 返回查询的值
+	 */
+	private Long getDataMaxId(String name, Long dspId){
+		Map<String,Object> repeatmap = new HashMap<String,Object>();
+		repeatmap.put("name", name);
+		repeatmap.put("dspId", dspId);
+    	Long id = dspAgentService.selectMaxId(repeatmap);
+		return id;
+	}
+}

+ 1 - 230
src/main/java/com/cloudcross/ssp/web/dsp/DspAgentController.java

@@ -47,94 +47,6 @@ public class DspAgentController extends SimpleController{
 	@Autowired
 	private ILogService logService;
 	
-	/**
-	 * 批量添加dsp账户
-	 * @param paramMap 参数,json数组
-	 * @return
-	 */
-	@SuppressWarnings("unchecked")
-	@RequestMapping("/add")
-	public @ResponseBody List<Map<String,Object>> add(HttpServletRequest request,@RequestParam Map<String,Object> paramMap){
-		List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-		List<DspAgent> list = new ArrayList<DspAgent>();
-		String dspAgentList = (String) paramMap.get("request");
-		Map<String, FieldInfo> fieldInfoMap = DspAgent.getFieldInfoForDspAgent();
-		if(dspAgentList != null && !"".equals(dspAgentList)){
-			Map<String,Object> mapObj = this.getDspAgentList(dspAgentList, result, list, fieldInfoMap,"add");
-			list = (List<DspAgent>) mapObj.get("list");
-			result = (List<Map<String,Object>>) mapObj.get("result");
-			if(!list.isEmpty()){
-				dspAgentService.add(list);
-				/*** 新增日志 ***/
-				this.addLog(request, list, "add");
-			}
-		}else{
-			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_EMPTY,false,null,0,"error"));
-		}
-		return result;
-	}
-	
-	/**
-	 * 批量编辑dsp账户
-	 * @param paramMap 参数,json数组
-	 * @return
-	 */
-	@SuppressWarnings("unchecked")
-	@RequestMapping("/update")
-	public @ResponseBody List<Map<String,Object>> update(HttpServletRequest request,@RequestParam Map<String,Object> paramMap){
-		List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-		List<DspAgent> list = new ArrayList<DspAgent>();
-		String dspAgentList = (String) paramMap.get("request");
-		Map<String, FieldInfo> fieldInfoMap = DspAgent.getFieldInfoForDspAgent();
-		if(dspAgentList != null && !"".equals(dspAgentList)){
-			Map<String,Object> mapObj = this.getDspAgentList(dspAgentList, result, list, fieldInfoMap,"edit");
-			list = (List<DspAgent>) mapObj.get("list");
-			result = (List<Map<String,Object>>) mapObj.get("result");
-			if(!list.isEmpty()){
-				dspAgentService.add(list);
-				/*** 新增日志 ***/
-				this.addLog(request, list, "edit");
-			}
-		}else{
-			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_EMPTY,false,null,0,"error"));
-		}
-		return result;
-	}
-	
-	/**
-	 * 查询所有dsp账户
-	 * @param paramMap 参数
-	 * @return
-	 */
-	@RequestMapping("/getAll")
-	public @ResponseBody List<DspAgent> getAll(HttpServletRequest request,@RequestParam Map<String,Object> paramMap){
-		List<DspAgent> result = new ArrayList<DspAgent>();
-		result = dspAgentService.getAll(paramMap);
-		return result;		
-	}
-	
-	/**
-	 * 根据id,批量查询dsp账户
-	 * 
-	 * @param paramMap 参数
-	 * 				dspIds:"1,2"  以逗号分隔的字符串
-	 * @return
-	 */
-	@RequestMapping("/get")
-	public @ResponseBody List<DspAgent> get(HttpServletRequest request,@RequestParam Map<String,Object> paramMap){
-		List<DspAgent> result = new ArrayList<DspAgent>();
-		if(paramMap.get("dspIds") != null && !"".equals(paramMap.get("dspIds"))){
-			List<Long> list = new ArrayList<Long>();
-			String[] ids = paramMap.get("dspIds").toString().split(",");
-			for (int i = 0, l = ids.length; i < l; i++) {
-				list.add(Long.valueOf(ids[i]));
-			}
-			paramMap.put("idList", list);
-			result = dspAgentService.get(paramMap);
-		}
-		return result;		
-	}
-	
 	/**
 	 * 根据id,批量查询dsp账户
 	 * 
@@ -159,146 +71,5 @@ public class DspAgentController extends SimpleController{
 		}
 		return success;		
 	}
-	
-	/**
-	 * 解析传递的数据
-	 * @param dspAdvertiserList 广告主数据集合
-	 * @param result 记录的错误描述结果
-	 * @param list 没有问题的数据集合
-	 * @param fieldInfoMap 字段属性
-	 * @return tab 标识:添加或编辑
-	 */
-	private Map<String,Object> getDspAgentList(String dspAgentList, List<Map<String,Object>> result,
-			List<DspAgent> list, Map<String, FieldInfo> fieldInfoMap, String tab){
-		Map<String,Object> mapObj = new HashMap<String,Object>();
-		try {
-			//解析JSONArray
-			JSONArray jsonArray = JSONArray.fromObject(dspAgentList);
-			for (int i = 0, l = jsonArray.size(); i < l; i++) {
-				boolean flag = false;
-				JSONObject obj = jsonArray.getJSONObject(i);
-				if(!obj.containsKey("id") && "edit".equals(tab)){//编辑时,没有id这下面的代码不需要执行
-					result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_DSPID_NOT_EMPTY,false,null,(i+1),"error"));
-					continue;
-				}
-				this.addNotEmptyField(obj);//如果必填字段没有传递,手动添加必填字段,值为空
-				@SuppressWarnings("unchecked")
-				Iterator<String> itt = obj.keys();
-				while (itt.hasNext()) {
-	                String key = itt.next().toString();  
-	                Object value = obj.getString(key);
-	                Map<String,Object> map = FieldInfo.validateField(fieldInfoMap, key, value, (i+1));
-	                if(!map.isEmpty()){
-	                	flag = true;
-	                	result.add(map);
-	                }
-	            }
-				if(!flag){
-					Long dspId = null;
-					if("edit".equals(tab)){
-						dspId = Long.valueOf(obj.get("id").toString());
-					}
-					Long id = this.getDataMaxId(obj.get("token").toString(), obj.get("name").toString(), dspId);
-                	if(id != null && id != 0){
-                		if("add".equals(tab)){
-                			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_ADD_REPEAT,false,null,(i+1),"error"));
-                		}else{
-                			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_UPDATE_REPEAT,false,null,(i+1),"error"));
-                		}
-                	}else{
-                		list.add((DspAgent)JSONObject.toBean(obj,DspAgent.class));
-                		if("add".equals(tab)){
-                			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_ADD_SUCCESS,false,null,(i+1),"success"));
-                		}else{
-                			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_UPDATE_SUCCESS,false,null,(i+1),"success"));
-                		}
-                	}
-				}
-			}
-			mapObj.put("result", result);
-			mapObj.put("list", list);
-		}catch (JSONException e) {
-			// TODO Auto-generated catch block
-			result.add(FieldInfo.getErrorMessage(FieldValidate.CHECK_PARAMDATA_FORMAT_ERROR,false,null,0,"error"));
-		}
-		mapObj.put("result", result);
-		mapObj.put("list", list);
-		return mapObj;
-	}
-	
-	/**
-	 * 添加操作的日志信息
-	 * @param request
-	 * @param list 数据集合
-	 * @param tab 标识:添加或编辑
-	 */
-	private void addLog(HttpServletRequest request, List<DspAgent> list, String tab){
-		/*** 新增日志 ***/
-		JSONArray jsonArray = JSONArray.fromObject(list);
-		for (int i = 0, l = jsonArray.size(); i < l; i++) {
-			JSONObject obj = jsonArray.getJSONObject(i);
-			Log log = new Log();
-			//对应模块
-			log.setModule("DspAgent");
-			//对应表名
-			log.setTableName("t_dsp_agent");
-			if("add".equals(tab)){
-				Long id = this.getDataMaxId(obj.get("token").toString(), obj.get("name").toString(), null);
-            	//增加对应的id
-				log.setRecordId(id);
-				//对应操作类型
-				log.setActionType("新增");
-				//对应的操作
-				log.setAction("新增了一个dsp账户:" + obj.get("name").toString());
-			}else if("edit".equals(tab)){
-				//增加对应的id
-				log.setRecordId(Long.valueOf(obj.get("id").toString()));
-				//对应操作类型
-				log.setActionType("编辑");
-				//对应的操作
-				log.setAction("编辑原来的dsp账户为:" + obj.get("name").toString());
-			}
-			//下面这几个字段目前后端数据没有得到。所以仅作测试用!
-			log.setActionTime("100");
-			log.setAccountId(new Long(getLoginUser().getId()));
-			log.setUserIp(Common.toIpAddr(request));
-			log.setAccountName(getLoginUser().getAccountName());
-			logService.add(log);
-		}
-	}
-	
-	/**
-	 * 获取最大的id,根据条件查询
-	 * @param token
-	 * @param name
-	 * @return 返回查询的值
-	 */
-	private Long getDataMaxId(String token, String name, Long dspId){
-		Map<String,Object> repeatmap = new HashMap<String,Object>();
-		repeatmap.put("token", token);
-		repeatmap.put("name", name);
-		repeatmap.put("dspId", dspId);
-    	Long id = dspAgentService.selectMaxId(repeatmap);
-		return id;
-	}
-	
-	/**
-	 * 添加必填字段,以防对方没有传递此参数
-	 * @param obj
-	 */
-	private void addNotEmptyField(JSONObject obj){
-		if(!obj.containsKey("token")){
-			obj.put("token", "");
-		}
-		if(!obj.containsKey("name")){
-			obj.put("name", "");
-		}
-		if(!obj.containsKey("ip")){
-			obj.put("ip", "");
-		}
-		if(!obj.containsKey("port")){
-			obj.put("port", "");
-		}
-	}
-	
+
 }

+ 1 - 0
src/main/resources/config/spring/mod/spring-security.xml

@@ -31,6 +31,7 @@
 		<security:intercept-url pattern="/main/common" access="permitAll"/>
 		<security:intercept-url pattern="/assets/**" access="permitAll"/>
 		<security:intercept-url pattern="/favorite*" access="permitAll"/>
+		<security:intercept-url pattern="/dsp/**" access="permitAll"/>
 		<security:intercept-url pattern="/settings/profile*" access="isAuthenticated()"/>
 		<security:intercept-url pattern="/main/dashboard*" access="isAuthenticated()"/>
 		<!--  

+ 89 - 0
src/main/webapp/WEB-INF/pages/back/main/dsp/dsp-agent/list.ftl

@@ -0,0 +1,89 @@
+<@override name="head">	
+<title>dsp账户管理</title>
+<link rel="stylesheet" href="${ctx}/assets/css/dspManager.css"/>
+<script type="text/javascript" src="${ctx}/assets/js/common/validate.js"></script>
+<script type="text/javascript" src="${ctx}/assets/js/back/dspManager.js"></script>
+</@override>	
+<@override name="body">
+<div id=content_bg>
+ 	<#include "/back/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/dsp/dsp-agent/list">首页</a></li>
+					<li><i class="icon-angle-right"></i></li>
+					<li class="navDiv_currentLi">账户管理</li>
+				</ul>  
+	 		</div>
+	 		<div id="dspManagerDivs">
+	 			<div id="dspManagerDivs_left">
+	 				<form id="dspAgentListForm" action="${ctx}/back/main/dsp/dsp-agent/list" method="post">
+		 				<div id="dsp_searchValueDiv">
+							<input id="searchValue" type="text" name="dspName" value="${dspName!}" placeholder="请输入dsp名称"/>
+							<input id="dsp_serachDataImg" type="submit" value=""/>
+						</div>
+						<label class="dspManager_label">dsp名称</label>
+						<ul id="dspAgentListUl">
+							<#if dspAgentList ??>
+							<#list dspAgentList as dspAgent>
+								<li value="${dspAgent.id}" title="${dspAgent.name}">${dspAgent.name}</li>
+							</#list>
+							</#if>
+						</ul>
+	 				</div>
+	 			</form>
+	 			<div id="dspManagerDivs_right">
+	 				<!-- <a id="btn-addAccount" class="btn2" type="button">添加dsp账户</a> -->
+	 				<label id="dspAgentTitle" class="dspManager_label">添加dsp账户信息</label>
+	 				<form id="validateForm_dspAgent">
+	 					<input type="hidden" name="id" id="dspId" value="0"/>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-yes">*</span>DSP名称:</label>
+							<input class="input-text" tabindex="1" id="name" name="name" type="text" value="" verify="text/255/1/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-yes">*</span>公司注册名:</label>
+							<input class="input-text" tabindex="2" id="companyName" name="companyName" type="text" value="" verify="text/255/1/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-no"></span>网址:</label>
+							<input class="input-text" tabindex="3" id="homepage" name="homepage" type="text" value="" verify="website/255/0/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-yes">*</span>联系人:</label>
+							<input class="input-text" tabindex="4" id="contacts" name="contacts" type="text" value="" verify="text/255/1/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-no"></span>电话:</label>
+							<input class="input-text" tabindex="5" id="tel" name="tel" type="text" value="" verify="tel-mobile/12/0/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-no"></span>E-mail:</label>
+							<input class="input-text" tabindex="6" id="email" name="email" type="text" value="" verify="email/255/0/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-no"></span>备注:</label>
+							<input class="input-text" tabindex="7" id="memo" name="memo" type="text" value="" verify="text/255/0/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-yes">*</span>IP:</label>
+							<input class="input-text" tabindex="8" id="ip" name="ip" type="text" value="" verify="text/255/1/0"/><span class="spanVaildate"></span>
+						</div>
+						<div class="input-group">
+							<label class="input-label"><span class="lbl-yes">*</span>端口:</label>
+							<input class="input-text" tabindex="9" id="port" name="port" type="text" value="" verify="number/255/1/0"/><span class="spanVaildate"></span>
+						</div>
+						<div id="footBtn">
+							<button class="btn-save" type="button">保存</button>
+							<button class="btn-cancel" type="reset">取消</button>
+						</div>
+					</form>
+	 			</div>
+	 		</div>
+		</div>
+    </div>
+</div>
+</@override>
+<@extends name="/common/simple.ftl"/>

+ 3 - 1
src/main/webapp/WEB-INF/pages/back/main/public-head.ftl

@@ -35,7 +35,9 @@
 		
 		<@sec.authorize access="hasAnyRole('ROLE_back_authority,ROLE_MANAGER')">
 		<li><a href="${ctx}/back/main/authority"><span>权限管理</span></a></li>  	
-		</@sec.authorize>		
+		</@sec.authorize>
+		
+		<li><a href="${ctx}/back/main/dsp/dsp-agent/list"><span>dsp平台</span></a></li>		
 	</ul>	
 	<div id="divselect" >
 	    <div id="currentOpa">

+ 78 - 0
src/main/webapp/assets/css/dspManager.css

@@ -0,0 +1,78 @@
+/*** dsp平台的样式 ***/
+
+#dspManagerDivs{
+	clear:both;
+	border-top:2px solid #b9c5d9;
+	margin-top:40px;
+	display:flex;
+}
+
+#dspManagerDivs .dspManager_label{
+	margin:20px 0;
+	display: inline-block;
+	font-size: 16px;
+	font-weight: bold;
+}
+
+#dspManagerDivs_left{
+	width:360px;
+	float: left;
+	margin-top:20px;
+}
+
+#dspManagerDivs_right{
+	float: left;
+	padding-left:40px;
+	border-left:2px solid #b9c5d9;
+}
+
+#dsp_searchValueDiv input[type='text']{
+	padding-left:20px;
+	background-color: #f3f3f3;
+	border-radius:5px;
+	width:200px;
+	height:34px;
+	line-height:34px;
+	color:#444444;
+	font-size:12px;
+}
+
+#dsp_serachDataImg{
+	width:30px;
+	height:34px;
+	cursor: pointer;
+	background: url(../images/fangdajing.png) no-repeat 0 10px;
+	border:none;
+	display: flex;
+    margin: -38px 0 0 193px;
+    position: absolute;
+}
+
+#dsp_serachDataImg:focus{
+	outline:none;
+}
+
+#dspAgentListUl{
+	height:430px;
+	overflow-y:auto;
+	overflow-x:hidden;
+	margin-left:20px;
+}
+
+#dspAgentListUl li{
+	width:150px;
+	height:34px;
+	line-height:34px;
+	text-align: center;
+	cursor: pointer;
+}
+
+#dspAgentListUl li.changeStyle{
+	background-color: #4C637B;
+	color: #fff;
+}
+
+#btn-addAccount{
+	display: block;
+	margin-top: 20px;
+}

+ 84 - 0
src/main/webapp/assets/js/back/dspManager.js

@@ -0,0 +1,84 @@
+$(document).ready(function() {
+	var ctx = $("#ctx").val();//获取服务器地址
+	
+	/***************************    账户列表页    ***************************/
+	
+	$("#dsp_serachDataImg").click(function(){
+		$("#dspAgentListForm").submit();
+		return false;
+	});
+	
+	if($("#validateForm_dspAgent").html()){
+		$("#validateForm_dspAgent").autovalidate();
+	}
+	
+	$("#dspAgentListUl li").click(function(){
+		var dspId = $(this).attr("value");
+		$(this).addClass("changeStyle").siblings(".changeStyle").removeClass("changeStyle");
+		$("#dspAgentTitle").text("编辑dsp账户信息 —— "+$(this).text());
+		$.post(ctx+"/back/main/dsp/dsp-agent/getDspAgentById",{dspId:dspId},function(data){
+			$("#validateForm_dspAgent").setData(data);
+		});
+	});
+	
+	$(".btn-save").click(function(){
+		if (!$("#validateForm_dspAgent").validate()) {
+			return false;
+		}
+		var DspAgent = $("#validateForm_dspAgent").serialize();
+		var flag = isRepeat();//判断账号名称是否重复
+		if(flag){
+			return false;
+		}
+		$.post(ctx+"/back/main/dsp/dsp-agent/save", DspAgent, function(data){
+			$("#dspAgentListForm").submit();
+			return false;
+		});
+	});
+	
+	$(".btn-cancel").click(function(){
+		$("#validateForm_dspAgent").find("span.spanVaildate").html("");
+		$("#validateForm_dspAgent").find("input").css("box-shadow","nonr").attr('title','');
+		$("#dspAgentListForm").submit();
+		return false;
+	});
+	
+	$("#validateForm_dspAgent input[name='name']").blur(function(){
+		isRepeat();
+	});
+
+});
+
+$.fn.setData = function(data){
+	var obj=this;
+	$.each(data, function (name, ival) {
+		obj.find("[name="+name+" ]").val(ival);
+	});
+}
+
+function isRepeat(){
+	var flag = false;
+	var dspId = "";
+	if($("#dspId").val() == 0){
+		dspId = null;
+	}else{
+		dspId = $("#dspId").val();
+	}
+	var nameObj = $("#validateForm_dspAgent input[name='name']");
+	$.ajax({
+       	type: "POST",
+        url: $("#ctx").val()+"/back/main/dsp/dsp-agent/isRepeat",
+        async: false,
+        data: {name:nameObj.val(),dspId:dspId},
+        success: function(data){
+        	if(data == true){
+     			nameObj.css("box-shadow","0 0 6px #ff0000").attr('title','你输入的dsp账户已存在!');
+     			nameObj.parent().find("span.spanVaildate").html("你输入的dsp账户已存在!");
+     			flag = true;
+     		}else{
+	 			flag = false;
+     		}
+        }
+	});
+	return flag;
+}