`
eric.zhang
  • 浏览: 124041 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

项目里用到的Jquery,json,struts2结合

阅读更多
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="voteComment" extends="json-default">
		<action name="saveVoteComment" class="voteCommentAction" method="saveVoteComment">
			<result type="json"/>
		</action>
		<action name="loadCourseComments" class="voteCommentAction" method="loadCourseComments">
			<result type="json"/>
		</action>
		<action name="loadCourseCommentsForPage" class="voteCommentAction" method="loadCourseComments">
			<result type="json"/>
		</action>
		<action name="goodVote" class="voteCommentAction" method="countGoodVoteNum">
			<result type="json"/>
		</action>
		<action name="badVote" class="voteCommentAction" method="countBadVoteNum">
			<result type="json"/>
		</action>
	</package>
</struts>




  
//用于处理置顶
jQuery.fn.topLink = function (settings) {
	settings = jQuery.extend({min:1, fadeSpeed:200, ieOffset:38}, settings);
	return this.each(function () {
        //listen for scroll
		var el = $(this);
		el.css("display", "none"); //in case the user forgot
		$(".overview").scroll(function () {
			if (jQuery.support.hrefNormalized) {
				el.css({"position":"absolute", "top":$(".scrollbar").height()+10,"right":settings.ieOffset});
			}
			if ($(".overview").height() > $(".scrollbar").height()) {
				el.fadeIn(settings.fadeSpeed);
				if($(".overview").css("top")=="0px"){
					el.fadeOut(settings.fadeSpeed);
				}
			} 
			else{
				el.fadeOut(settings.fadeSpeed);
			}
		});
	});
};
var commentCurrentPage = 0;
var commentTotal = 0;
var commentTotalPage = 0;
var courseId = 0;
var commentPageSize = 10;
var badVoteNum = 0;
var goodVoteNum = 0;
var commentCount = 0;
$(function () {
	
	//评论部分  开始
	$(".commentsDiv").hide();
	$(".showCommentA").live("click",function(){
		var course_Id = $(this).attr("id");
		openComment(course_Id,commentCurrentPage,commentPageSize);
	});
	$(".closeComment").live("click",function(){
		closeComment();
	});
	//左边 导航菜单
	$("#closeMenuDiv").click(function () {
		var courseId = $(".showCommentA").eq(0).attr("id");
		openComment(courseId,commentCurrentPage,commentPageSize);
	});
  //评论部分  结束
  
  //底部导航 开始
	$(".nav").height("4px").css("opacity", "0.4");
	$(".nav").hover(function (event) {
		if (event.pageY > 560) {
			$(this).animate({height:"44px", opacity:1}, 1000);
		}
	}, function (event) {
		if (event.pageY <= 605) {
			$(this).animate({height:"4px", opacity:"0.4"}, 1000);
		}
	});
 //底部导航 结束
 //置顶
	$("#top-link").topLink({min:1, fadeSpeed:500});
    //smoothscroll
	$("#top-link").click(function (e) {
		e.preventDefault();//==return false;
		$(".overview,.thumb").animate({top:0},10);
		$(this).fadeOut(200);
	});
	$('.overview').mousewheel(function(event,delta) {
		var temp = $(".thumb").css("top");
		if(temp == "0px"){
			$("#top-link").fadeOut(200);
		}
	});
	$(".thumb").click(function(){
		var temp = $(".thumb").css("top");
		if(temp == "0px"){
			$("#top-link").fadeOut(200);
		}
	});
	//点击好评
	$("#goodCommentDiv").live("click",function(){
		var parameters = new Object();
		parameters["courseId"] = courseId;
		parameters["userId"] = "3";
		$.post("voteComment/goodVote.action",parameters,function(data) {
			alert(data.msg);
			if(data.success){
				$("div[title=goodCommentNum]").html(data.goodVoteNum); 
			}
		},"json");
	});
	//点击差评
	$("#badCommentDiv").live("click",function(){
		var parameters = new Object();
		parameters["courseId"] = courseId;
		parameters["userId"] = "3";
		$.post("voteComment/badVote.action",parameters,function(data) {
			alert(data.msg);
			if(data.success){
				$("div[title=badCommentNum]").html(data.badVoteNum); 
			}
		},"json");
	});
	//点击 评论按钮,发表评论
	$(".cl_comment_btn").live("click",function(){
		var temp_comments = $(".cl_comment_textarea").val();
		if(temp_comments.trim() == ""){
			alert('评论内容不能为空!');
			return;
		}
		var parameters = new Object();
		parameters["courseId"] = courseId;
		parameters["userId"] = "3";
		parameters["comments"] = $(".cl_comment_textarea").val();
		$.post("voteComment/saveVoteComment.action",parameters,function(data) {
			if(data.success){
				$("#commentslist").empty();
				loadComments(courseId,1,commentPageSize);
				$(".cl_comment_textarea").val("");
			}
		},"json");
	});
});


//关闭评论
function closeComment() {
	$(".scrollbar").show();
	$("#scrollbar1").unbind("mousewheel");
	$("#scrollbar1").bind("mousewheel",function(event,delta){$(this).tinyscrollbar();});
	
	var flag = $(".left").width();
	$("#closeMenuDiv").attr("class","arrowicon_toleft_b");
	$(".detaillist").width("721px");
	$(".center").width("721px");
	if (flag == 162) {
		$(".center").animate({left:"162px",marginLeft:"0px"}, "slow");
		$(".commentsDiv").fadeOut("slow").width("1px").css("margin-right", "0px");
	} else {
		$(".center").animate({left:"162px",marginLeft:"0px"}, "slow");
		$(".bookmark").fadeIn("slow");
		$(".commentsDiv").fadeOut("slow").width("1px").css("margin-right", "0px");
		$(".left").animate({width:"162px"}, "slow");
	}
}


//显示评论
function openComment(course_Id,commentCurrentPage1,pages_size){
	$(".cl_comment_textarea").val("");
	
	$(document).unbind("mousewheel");
	$(document).bind("mousewheel",function(event,delta){event.stopPropagation();});
	$("#scrollbar1").unbind("mousewheel");
	$("#scrollbar1").bind("mousewheel",function(event,delta){event.stopPropagation();});
	$(".scrollbar").hide();
	
	
	var closeFlag = $("#closeMenuDiv").attr("class");
	if (closeFlag == "arrowicon_toleft_b") {
	$("#scrollbar1").unbind("endlessScroll");
	$(".left").animate({width:"20px"}, "slow", function () {
		$(".bookmark").hide();
		$("#closeMenuDiv").attr("class","arrowicon_toright_b");
	}).css("z-index", "0");
	$(".detaillist").attr("style",$(".overview").attr("style")).width("645px");
	$(".commentsDiv").width("187px").css("right", "-218px").fadeIn("slow");
	$(".center").width("645px").animate({left:"0px",marginLeft:"20px"}, "slow");
//	$(".scrollbarClass").attr("id","");
//	$(".scrollbarClass").width("645px");
	
	
	if(courseId != course_Id){
		commentCurrentPage = 1;
		totalPage = 1;
		commentCurrentPage1 = 1;
		loadComments(course_Id,commentCurrentPage1,pages_size);
	}
		
	} else {
		closeComment();
	}
}

//发送请求,加载评论
function loadComments(courseId1,currentPage1,pageSize1){
	var parameters = new Object();
	parameters["courseId"] = courseId1;
	parameters["commentCurrentPage"] = currentPage1;
	parameters["commentPageSize"] = pageSize1;
	$.post("voteComment/loadCourseComments.action",parameters,function(data) {
		showComments(data);
	},"json");
}
//将查询到的评论显示到页面上
function showComments(data){
	commentCurrentPage = data.commentCurrentPage;
	commentTotal = data.commentTotal;
	badVoteNum = data.badVoteNum;
	goodVoteNum = data.goodVoteNum;
	courseId = data.courseId;
	commentTotalPage = data.commentTotalPage;
	var list = data.commentList;
    $("div[title=goodCommentNum]").html(goodVoteNum); 
    $("div[title=badCommentNum]").html(badVoteNum); 
    $("#totalNum").html(commentTotal); 
 	var commentHtml =  "<div class='cl_comment_down'>";
 	var tem = "";			
 	if(list != null){
		for(var i = 0; i < list.length; i++){
			var commentTime = list[i].commentTime;
			var comment = list[i].comments
			var userPhoto = list[i].userHeadPhoto
			var userNickName = list[i].userNickName	
			var userRealName = list[i].userRealName
			var userId = list[i].userId;
			var commentDetail ="<div class='down_row down_row_first'><div class='cl_comment_userinfo'>"
	       							+"<div class='cl_comment_userphoto'><img src='../../images/photo/userphoto44.jpg' width='44' height='44' alt='"+userRealName+"' />"
	       							+"</div><div><h4>"+userNickName+"</h4><div class='datetime'>"+commentTime+"</div>"
	           						+"</div></div><p class='cl_commnet_content' style='height:100%; width:168px;'>"+comment+"</p></div>";
			tem +=commentDetail;
		}
	}
	var temp_commentsBar = $('#scrollbars_comments');
	temp_commentsBar.tinyscrollbarComment();
	var html = commentHtml+tem+"</div>";
	$("div#commentslist").html(html);
	temp_commentsBar.update(true);
	
	$('#commentslist').live('mousewheel',function(event,delta1) {
	    event.preventDefault();
	    clickAndWheelForPages(event,delta1);
	});
	$(".thumb_comments").live("click",function(event,delta1){
	 	event.preventDefault();
	    clickAndWheelForPages(event,delta1);
	});
}
var clickAndWheelForPages = function(event,delta1){
	var delta = delta1;
	   var code = event.keyCode;
	   commentCount = $(".cl_comment_down > div").size();
	   var temp_top=$("div.thumb_comments").css("top");
	   var temp_thum_height=$("div.thumb_comments").height();
	   var temp_track_height=$("div.track_comments").height();
	   temp_top=parseInt(temp_top.replace("px",""));
	   var temp_scrollHeight = $("div.overview_comments").attr("scrollHeight");
	   var temp_overview_top= $("div.overview_comments").css("top");
	   var temp_offsetHeight= $("div.viewport_comments").attr("offsetHeight");
	       temp_overview_top=-parseInt(temp_overview_top.replace("px",""));
	   var temp_thum = temp_top+temp_thum_height;
	   var temp_height = temp_offsetHeight+temp_top+temp_thum_height+temp_overview_top;
	   if (temp_thum >= temp_track_height*0.8 && temp_scrollHeight <= temp_height && commentCount < commentTotal)
		{
		//alert('新加载....');
		var t = Math.random();
		$.ajax({
			url:"voteComment/loadCourseCommentsForPage.action?t="+t,
			type:"POST",
			data:{"courseId":courseId,"commentCurrentPage":commentCurrentPage+1,"commentPageSize":commentPageSize},
			dataType:"json",
			global: false,
			success: showCommentForPages
		});	
	};
}
function showCommentForPages(data) {
		commentCurrentPage = data.commentCurrentPage;
		var list = data.commentList;
	    var tem = "";			
		if(list != null){
			for(var i = 0; i < list.length; i++){
				var commentTime = list[i].commentTime;
				var comment = list[i].comments
				var userPhoto = list[i].userHeadPhoto
				var userNickName = list[i].userNickName	
				var userRealName = list[i].userRealName
				var userId = list[i].userId;
				var commentDetail ="<div class='down_row down_row_first' ><div class='cl_comment_userinfo'>"
		       							+"<div class='cl_comment_userphoto'><img src='../../images/photo/userphoto44.jpg' width='44' height='44' alt='"+userRealName+"' />"
		       							+"</div><div><h4>"+userNickName+"</h4><div class='datetime'>"+commentTime+"</div>"
		           						+"</div></div><p class='cl_commnet_content' style='height:100%; width:168px;'>"+comment+"</p></div>";
				tem +=commentDetail;
			}
		}
		temp_commentsBar = $('#scrollbars_comments');
		temp_commentsBar.tinyscrollbarComment();
		$("div.cl_comment_down").append(tem);
		temp_commentsBar.update(true);
		commentCount = $(".cl_comment_down > div").size();
		return false;					
	};
//当前选中的左边菜单导航
function currentNav(id) {
	$(".nav_c li").each(function () {
		$(this).removeAttr("class");
		$(this).find("div").removeClass("arrowicon_toleft_w");
		if (id == $(this).attr("id")) {
			$(this).addClass("curmenu");
			$(this).find("div").addClass("arrowicon_toleft_w");
		}
	});
};





$(function () {

//点击 热门课程
$("#one a").css("cursor", "pointer").click(function () {
$.post("index.jsp");
});
//初始化 热门课程 页面
initPopularCourseAjax();
});
var initPopularCourseAjax = function () {
$.post("initPopularCourseAction.action", function (data) {
var counts = data["fileCounts"];
var names = data["fileNames"];
$(".changepagedotter").empty();
if (counts > 0) {
for (var i = 0; i < counts; i++) {
$(".changepagedotter").append($("<a style='cursor:pointer;'  id='content"+i+"' name='" + names[i] + "'></a>"));
}
$(".changepagedotter a").eq(0).attr("class", "currentpage");
$(".changepagedotter a").live("click", function(e) {
    showPopularCourseAjax($(this).attr("name"),$(this).attr("id"));
});
$(document).keydown(function(event){
keyboardChangePage(event, 0);
});
$('.center').mousewheel(function(event,delta) {
keyboardChangePage(event, delta);
});
}
}, "json");
};
//按 键盘上的左、右、PgUp、pgDn以及鼠标中键滚动 执行翻页
var keyboardChangePage = function(event,delta1){
var fileName = '';
var id = '';
//delta为鼠标中键滚动变量,delta>0:表示up, delta<0:表示down
var delta = delta1;
var code = event.keyCode;
var currentPageName = $(".currentpage").attr("name");
var currentPageId = $(".currentpage").attr("id");
var firstId = $(".changepagedotter a:first").attr("id");
var lastId = $(".changepagedotter a:last").attr("id");
//键盘按 向右,PgDn 鼠标向下滚动
if(code == '39'|| code == '34' || delta < 0){
event.preventDefault();
if(lastId == currentPageId) {
return false;
}
$(".changepagedotter a").each(function(){
if(currentPageName ==$(this).attr("name")){
fileName = $(this).next("a").attr("name");
id = $(this).next("a").attr("id");
showPopularCourseAjax(fileName,id);
}
});
}
if(code == '37'|| code == '33' || delta > 0){
event.preventDefault();
if(firstId == currentPageId){
return false;
}
$(".changepagedotter a").each(function(){
if(currentPageName ==$(this).attr("name")){
fileName = $(this).prev("a").attr("name");
id = $(this).prev("a").attr("id");
showPopularCourseAjax(fileName,id);
}
});
}
};
//点击翻页或者鼠标移动到翻页按钮上 执行翻页
var showPopularCourseAjax = function (fileName,id) {
var parameters = new Object();
parameters["fileName"] = fileName;
$(".changepagedotter a").removeClass("currentpage");
$("#"+id).addClass("currentpage");
$.post("changePagePopularCourseAction.action", parameters, function (data) {
$(".center").html($(data["content"]).eq(1).html());
}, "json");
};




struts.xml
<package name="CourseJson" extends="json-default">
		<action name="listCourseAction" class="courseAction" method="list">
			<result type="json" />
		</action>
		<action name="addCourseAction" class="courseAction" method="addCourse">
			<result type="json" />
		</action>
		<!-- 处理翻页 -->
		<action name="changePagePopularCourseAction"
			class="popularCourseAction" method="changePage">
			<result type="json" />
		</action>
		<!-- 初始化首页 -->
		<action name="initPopularCourseAction"
			class="popularCourseAction" method="initPopularCourse">
			<result type="json" />
		</action>
</package>



Actione
VoteCommentAction.java
package com.able.action.votecomment;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.struts2.json.annotations.JSON;

import com.able.action.BaseAction;
import com.able.dto.votecomment.UserVoteDetailDto;
import com.able.dto.votecomment.VoteCommentDto;
import com.able.dto.votecomment.VoteDto;
import com.able.dto.votecomment.VoteStrategyDto;
import com.able.model.Course;
import com.able.model.User;
import com.able.model.VoteComment;
import com.able.service.ICourseService;
import com.able.service.IUserService;
import com.able.service.IUserVoteDetailService;
import com.able.service.IVoteCommentService;
import com.able.service.IVoteService;
import com.able.service.IVoteStrategyService;
import com.able.util.Constants;
import com.able.util.SearchCondition;
import com.able.util.UtilTools;

public class VoteCommentAction extends BaseAction {
	private static final long serialVersionUID = 4290888239078443151L;
	private IVoteService voteService;
	private IVoteCommentService voteCommentService;
	private ICourseService courseService;
	private IUserService userService;
	private IVoteStrategyService voteStrategyService;
	private IUserVoteDetailService userVoteDetailService;
	private String msg;
	private boolean success;
	private List<VoteCommentDto> commentList;
	private int commentTotalPage;
	private int commentPageSize;
	private int commentCurrentPage;
	private int commentTotal;
	private long courseId;
	private long userId;
	private long voteId;
	private String comments;
	private long badVoteNum;
	private long goodVoteNum;
	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	
	public String saveVoteComment(){
		User user = null;
		Course course = null;
		try{
			if(UtilTools.isNumber(""+userId)){
				user = userService.get(userId);
			}else{
				success = false;
				msg = "对不起,请先登录!";
				return SUCCESS;
			}
			if(UtilTools.isNumber(courseId+"")){
				course = courseService.get(Long.valueOf(courseId));
			}else{
				msg = "评论失败!";
				success = false;
				return SUCCESS;
			}
			VoteComment voteComment = new VoteComment();
			voteComment.setComments(comments);
			voteComment.setCourse(course);
			voteComment.setUser(user);
			voteComment.setIsDeleted("0");
			voteComment.setCreateTime(new Date());
			voteComment.setCommentTime(new Date());
			voteComment.setCreatePerson(user.getNickname());
			voteCommentService.save(voteComment);
			commentCurrentPage = 1;
			msg = "评论成功!";
			success = true;
		}catch (Exception e) {
			success = false;
			msg = "评论失败!";
			this.log.error(e);
		}
		return SUCCESS;
	}
	public String testMethod(){
		this.getResponse();
		success = true;
		return SUCCESS;
	}
	
	public String loadCourseComments(){
		SearchCondition search = null;
		if(courseId > 0){
			try{
				commentTotal = voteCommentService.findAllCommentCountsByCourseId(courseId);
				search = new SearchCondition();
				search.setPropSortBy("commentTime");
				search.setLimit(commentPageSize);
				search.setStart((commentCurrentPage-1)*search.getLimit());
				search.setSortMode(Constants.DESC);
				badVoteNum = voteService.findTotalBadVoteByCourseId(courseId);
				goodVoteNum = voteService.findTotalGoodVoteByCourseId(courseId);
				commentList = voteCommentService.findAllCommentsByCourseIdForPage(courseId, search);
				if(commentTotal % commentPageSize > 0){
					commentTotalPage = commentTotal/commentPageSize + 1;
				}else{
					commentTotalPage = commentTotal/commentPageSize;
				}
			}catch(Exception e){
				success = false;
				this.log.error(e);
			}
		}
		return SUCCESS;
		
	}
	public String countGoodVoteNum(){
		if(courseId > 0 ){
			VoteStrategyDto strategyDto = voteStrategyService.findVoteStrategyByCourseId(courseId);
			VoteDto voteDto = voteService.findVoteByCourseId(courseId);
		//	String votePerssion = strategyDto.getVotePermissions();
			String voteRule = strategyDto.getVoteCountRules();
			List<UserVoteDetailDto> userListDetail = userVoteDetailService.findVoteDetailByCourseIdAndUserId(courseId, userId);
			//如果该课程还没有投票,则创建一个投票,并保存
			if(voteDto.getVoteId()== null || "0".equals(voteDto.getVoteId())){
				voteDto.setCourseId(courseId);
				Long voteDtoId = voteService.saveVote(voteDto);
				voteDto.setVoteId(voteDtoId);
			}
			Integer votedNum = 0;
			//投票规则:如果一个用户针对一门课程只能投一次票
			if("0".equals(voteRule)){
				if(userListDetail != null && userListDetail.size() > 0){
					for(UserVoteDetailDto dto : userListDetail){
						votedNum += dto.getVoteCount();
					}
				}
				//如果该用户还没有投票
				if(votedNum == 0){
					UserVoteDetailDto dto = new UserVoteDetailDto();
					dto.setCourseId(courseId);
					dto.setUserId(userId);
					dto.setVoteId(voteDto.getVoteId());
					dto.setVoteCount(1);
					long modelId = userVoteDetailService.saveUserVoteDetail(dto);
					//如果已经有人投票,则更新投票
					if(voteDto != null){
						voteDto.setGoodVote(voteDto.getGoodVote()+1);
						voteDto.getUserVoteDetailId().add(modelId);
						voteService.updateVote(voteDto);
					}//如果还没有投票,则创建投票对象并保存
					else{
						voteDto = new VoteDto();
						voteDto.setGoodVote(1);
						voteDto.setBadVote(0);
						voteDto.getUserVoteDetailId().add(modelId);
						voteDto.setCourseId(courseId);
						voteDto.setVoteId(voteDto.getVoteId());
						voteDto.setVoteStategyId(strategyDto.getVoteStrategyId());
						voteService.saveVote(voteDto);
					}
					goodVoteNum = goodVoteNum + 1;
					success = true;
					msg = "投票成功!";
				}else{
					success = false;
					msg = "对不起,你已经投过票了!";
				}
			}
			
			//投票规则:每个用户每天投票次数不超过1次
			if("1".equals(voteRule)){
				if(userListDetail != null){
					for(UserVoteDetailDto dto : userListDetail){
						Date d = null;
						try {
							d = sdf.parse(dto.getUpdateTime());
						} catch (ParseException e) {
							e.printStackTrace();
							log.error(e);
						}
						if(sdf.format(new Date()).equals(sdf.format(d))){
							votedNum += dto.getVoteCount();
						}else{
							votedNum = 0;
						}
					}
				}
				//如果该用户今天还没有投票
				if(votedNum < 1 || votedNum == null){
					UserVoteDetailDto dto = new UserVoteDetailDto();
					dto.setCourseId(courseId);
					dto.setUserId(userId);
					dto.setVoteId(voteDto.getVoteId());
					dto.setVoteCount(1);
					long modelId = userVoteDetailService.saveUserVoteDetail(dto);
					//如果已经有人投票,则更新投票
					if(voteDto != null){
						voteDto.setGoodVote(voteDto.getGoodVote()+1);
						voteDto.getUserVoteDetailId().add(modelId);
						voteService.updateVote(voteDto);
					}//如果还没有投票,则创建投票对象并保存
					else{
						voteDto = new VoteDto();
						voteDto.setGoodVote(1);
						voteDto.setBadVote(0);
						voteDto.getUserVoteDetailId().add(modelId);
						voteDto.setCourseId(courseId);
						voteDto.setVoteId(voteDto.getVoteId());
						voteDto.setVoteStategyId(strategyDto.getVoteStrategyId());
						voteService.saveVote(voteDto);
					}
					goodVoteNum = goodVoteNum + 1;
					success = true;
					msg = "投票成功!";
				}else{
					success = false;
					msg = "对不起,你今天已经投票,请明天再投!";
				}
			}
		}
		return SUCCESS;
	}
	
	
	public String countBadVoteNum(){
		if(courseId > 0 ){
			VoteStrategyDto strategyDto = voteStrategyService.findVoteStrategyByCourseId(courseId);
			VoteDto voteDto = voteService.findVoteByCourseId(courseId);
		//	String votePerssion = strategyDto.getVotePermissions();
			String voteRule = strategyDto.getVoteCountRules();
			List<UserVoteDetailDto> userListDetail = userVoteDetailService.findVoteDetailByCourseIdAndUserId(courseId, userId);
			//如果该课程还没有投票,则创建一个投票,并保存
			if(voteDto.getVoteId()== null || "0".equals(voteDto.getVoteId())){
				voteDto.setCourseId(courseId);
				Long voteDtoId = voteService.saveVote(voteDto);
				voteDto.setVoteId(voteDtoId);
			}
			Integer votedNum = 0;
			//投票规则:如果一个用户针对一门课程只能投一次票
			if("0".equals(voteRule)){
				if(userListDetail != null && userListDetail.size() > 0){
					for(UserVoteDetailDto dto : userListDetail){
						votedNum += dto.getVoteCount();
					}
				}
				//如果该用户还没有投票
				if(votedNum == 0){
					UserVoteDetailDto dto = new UserVoteDetailDto();
					dto.setCourseId(courseId);
					dto.setUserId(userId);
					dto.setVoteId(voteDto.getVoteId());
					dto.setVoteCount(1);
					long modelId = userVoteDetailService.saveUserVoteDetail(dto);
					//如果已经有人投票,则更新投票
					if(voteDto != null){
						voteDto.setBadVote(voteDto.getBadVote()+1);
						voteDto.getUserVoteDetailId().add(modelId);
						voteService.updateVote(voteDto);
					}//如果还没有投票,则创建投票对象并保存
					else{
						voteDto = new VoteDto();
						voteDto.setGoodVote(1);
						voteDto.setBadVote(0);
						voteDto.getUserVoteDetailId().add(modelId);
						voteDto.setCourseId(courseId);
						voteDto.setVoteId(voteDto.getVoteId());
						voteDto.setVoteStategyId(strategyDto.getVoteStrategyId());
						voteService.saveVote(voteDto);
					}
					badVoteNum = badVoteNum + 1;
					success = true;
					msg = "投票成功!";
				}else{
					success = false;
					msg = "对不起,你已经投过票了!";
				}
			}
			
			//投票规则:每个用户每天投票次数不超过1次
			if("1".equals(voteRule)){
				if(userListDetail != null){
					for(UserVoteDetailDto dto : userListDetail){
						Date d = null;
						try {
							d = sdf.parse(dto.getUpdateTime());
						} catch (ParseException e) {
							e.printStackTrace();
							log.error(e);
						}
						if(sdf.format(new Date()).equals(sdf.format(d))){
							votedNum += dto.getVoteCount();
						}else{
							votedNum = 0;
						}
					}
				}
				//如果该用户今天还没有投票
				if(votedNum < 1 || votedNum == null){
					UserVoteDetailDto dto = new UserVoteDetailDto();
					dto.setCourseId(courseId);
					dto.setUserId(userId);
					dto.setVoteId(voteDto.getVoteId());
					dto.setVoteCount(1);
					long modelId = userVoteDetailService.saveUserVoteDetail(dto);
					//如果已经有人投票,则更新投票
					if(voteDto != null){
						voteDto.setGoodVote(voteDto.getGoodVote()+1);
						voteDto.getUserVoteDetailId().add(modelId);
						voteService.updateVote(voteDto);
					}//如果还没有投票,则创建投票对象并保存
					else{
						voteDto = new VoteDto();
						voteDto.setGoodVote(0);
						voteDto.setBadVote(1);
						voteDto.getUserVoteDetailId().add(modelId);
						voteDto.setCourseId(courseId);
						voteDto.setVoteId(voteDto.getVoteId());
						voteDto.setVoteStategyId(strategyDto.getVoteStrategyId());
						voteService.saveVote(voteDto);
					}
					badVoteNum = badVoteNum + 1;
					success = true;
					msg = "投票成功!";
				}else{
					success = false;
					msg = "对不起,你今天已经投票,请明天再投!";
				}
			}
		}
		return SUCCESS;
	}
	@JSON(serialize=false)
	public IVoteCommentService getVoteCommentService() {
		return voteCommentService;
	}

	public void setVoteCommentService(IVoteCommentService voteCommentService) {
		this.voteCommentService = voteCommentService;
	}
	@JSON(serialize=false)
	public IUserService getUserService() {
		return userService;
	}

	public void setUserService(IUserService userService) {
		this.userService = userService;
	}
	@JSON(serialize=false)
	public ICourseService getCourseService() {
		return courseService;
	}

	public void setCourseService(ICourseService courseService) {
		this.courseService = courseService;
	}
	@JSON(serialize=false)
	public IVoteService getVoteService() {
		return voteService;
	}
	public void setVoteService(IVoteService voteService) {
		this.voteService = voteService;
	}
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public List<VoteCommentDto> getCommentList() {
		return commentList;
	}

	public void setCommentList(List<VoteCommentDto> dtos) {
		this.commentList = dtos;
	}



	public long getCourseId() {
		return courseId;
	}

	public void setCourseId(long courseId) {
		this.courseId = courseId;
	}

	public long getUserId() {
		return userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public String getComments() {
		return comments;
	}

	public void setComments(String comments) {
		this.comments = comments;
	}

	public int getCommentTotalPage() {
		return commentTotalPage;
	}
	public void setCommentTotalPage(int commentTotalPage) {
		this.commentTotalPage = commentTotalPage;
	}
	public int getCommentPageSize() {
		return commentPageSize;
	}
	public void setCommentPageSize(int commentPageSize) {
		this.commentPageSize = commentPageSize;
	}
	public int getCommentCurrentPage() {
		return commentCurrentPage;
	}
	public void setCommentCurrentPage(int commentCurrentPage) {
		this.commentCurrentPage = commentCurrentPage;
	}
	public int getCommentTotal() {
		return commentTotal;
	}
	public void setCommentTotal(int commentTotal) {
		this.commentTotal = commentTotal;
	}
	public long getBadVoteNum() {
		return badVoteNum;
	}
	public void setBadVoteNum(long badVoteNum) {
		this.badVoteNum = badVoteNum;
	}
	public long getGoodVoteNum() {
		return goodVoteNum;
	}
	public void setGoodVoteNum(long goodVoteNum) {
		this.goodVoteNum = goodVoteNum;
	}
	@JSON(serialize=false)
	public IVoteStrategyService getVoteStrategyService() {
		return voteStrategyService;
	}
	public void setVoteStrategyService(IVoteStrategyService voteStrategyService) {
		this.voteStrategyService = voteStrategyService;
	}
	@JSON(serialize=false)
	public IUserVoteDetailService getUserVoteDetailService() {
		return userVoteDetailService;
	}
	public void setUserVoteDetailService(
			IUserVoteDetailService userVoteDetailService) {
		this.userVoteDetailService = userVoteDetailService;
	}
	public long getVoteId() {
		return voteId;
	}
	public void setVoteId(long voteId) {
		this.voteId = voteId;
	}
	public static long getSerialVersionUID() {
		return serialVersionUID;
	}
	
}



PopularAction
package com.able.action.course;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.able.action.BaseAction;
import com.able.util.Constants;
import com.able.util.json.JSONException;
import com.able.util.json.JSONObject;

public class PopularCourseAction extends BaseAction {
	private static final long serialVersionUID = 1558906223631093472L;
	//接收热门文件夹名称
	private String FloderPath;
	//热门文件名称
	private String fileName;

	/**
	 * 初始化 热门课程 显示第一页及设置翻页按钮
	 * @return
	 */
	public String initPopularCourse(){
		this.getResponse().setCharacterEncoding("UTF-8");
		File[] files = getAllFiles();
		int filesCount = files.length;
		List<String> fileNames = new ArrayList<String>();
		JSONObject json = new JSONObject();
		PrintWriter pw = null;
		try {
			if(files != null){
				json.put("fileCounts", filesCount);
				for(int i = 0; i < files.length; i++){
					fileNames.add(files[i].getName());
				}
				Collections.sort(fileNames);
				json.put("fileNames", fileNames);
			}
			pw = this.getResponse().getWriter();
		} catch (JSONException e) {
			log.error(e);
		} catch (IOException e) {
			log.error(e);
		}finally{
			if(pw != null){
				pw.write(json.toString());
				pw.flush();
				pw.close();
			}
		}
		return SUCCESS;
	}
	/**
	 * 处理 热门课程 页面之间的切换
	 * @return
	 */
	public String changePage() {
		this.getResponse().setCharacterEncoding("UTF-8");
		File[] files = getAllFiles();
		StringBuffer sb = new StringBuffer();
		JSONObject json = new JSONObject();
		PrintWriter pw = null;
		BufferedReader reader = null;
		try {
			for (int i = 0; i < files.length; i++) {
				File f = files[i];
				if (fileName.equals(f.getName())) {
					reader = new BufferedReader(new InputStreamReader(
							new FileInputStream(f), "UTF-8"));
					String s = reader.readLine();
					while (s != null) {
						sb.append(s);
						s = reader.readLine();
					}
				}
			}
			json.put("content", sb.toString());
			pw = this.getResponse().getWriter();
		} catch (IOException e) {
			log.error(e);
		} catch (JSONException e) {
			log.error(e);
		}finally{
			if(pw != null){
				pw.write(json.toString());
				pw.flush();
				pw.close();
			}
		}
		return SUCCESS;
	}
	//取得所有 热门课程 页面文件
	@SuppressWarnings("deprecation")
	private File[] getAllFiles(){
		FloderPath = this.getRequest().getRealPath(Constants.POPULAR_COURSE_PATH);
		File fileFolder = new File(FloderPath);
		//过滤出所有以content开头的文件
		File[] files = fileFolder.listFiles(new FileFilter(){
			public boolean accept(File pathname) {
				if(pathname != null){
					if(pathname.isFile() && pathname.getName().startsWith("content")){
						return true;
					}
				}
				return false;
			}
		});
		return files;
	}
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
}
	



分享到:
评论
1 楼 calosteward 2014-12-12  
赞一个。
谢谢分享了~非常有用。
——————————————————————
java barcode reader
java barcode creator

相关推荐

    struts2.1.8 jquery json jax

    struts2.1.8 最新注册 运用了jquery json 登陆验证 比较实用 每个项目估计都要用到 里面代码很全 包也加上了 jquery也有 拿来就可以用

    常用jar包struts2、spring、hibernate、jquery、json

    常用jar包(struts2、spring、hibernate、jquery、json)

    struts2+json+jquery局部刷新实现注册验证

    struts2+json+jquery局部刷新实现注册验证,包括前台的用户名、密码、手机、身份证、邮箱(包含发邮件技术)、邮箱验证码、验证码的验证,用到的是json+jquery,后台则是用struts2+java类

    jQuery ajax请求struts action实现异步刷新

    这个样例是用JQuery ajax和struts来做的一个小样例,在这个样例中采用两种方式将java Util中的list转换成支json的格式,第一种是用json-lib.jar这个jar包来转换,第二种是采用goole的gson-2.1.jar来转换,大家可以...

    【毕业设计】基于SSH(Struts2+Spring+Hibernate)搭建的失物招领平台(前后端源码+SQL脚本).zip

    【毕业设计】基于SSH(Struts2+Spring+Hibernate)搭建的失物招领平台(前后端源码+SQL脚本).zip LostFound失物招领网,本意是打算为我们学校长沙理工大学而做,就是一个有关失物招领的交流平台。 项目用到的相关...

    ajax调用java传送json的小例子

    主要是用到jquery的ajax,java中的hibernate4的调用mysql数据和struts2地址重定向,并把数据转换成json数据,经过html页面中的javascript调用后台数据,有添加,修改,删除,查询等简单功能,适用于有ajax初学者,...

    JQuery 分页程序

    在网上看到有很多人介绍了JQuery分页,但基本上都是一个静态的东西,对于新手来说根本就没有多大用处,如何与后台进行操作也...用到了JQuery 分页插件pagination, JQuery ajax 、JQuery json ,并集成了Struts框架。

    jquery插件之flexigrid学习实例-jar包

    是struts2+json+flexigrid的完整实例所用到的jar包,请大家下载时看清楚。

    DS-Java:基于SSH(Struts2+Spring+Hibernate)搭建的论坛系统,属于一个类似于CSDN或者ITeye论坛的IT技术学习交流论坛,界面简单清爽,易于操作

    涉及的框架技术:Struts2 | Spring | Hibernate 其他技术:CSS | JQuery | Ajax | JSON | JSP | Servlet 数据库:MySQL 5.6 服务器:Tomcat 7.x 用到的其他项目:百度富文本编辑器 UEditor 注意:打开根目录里面的...

    利用了jquery的ajax实现二级联互动菜单

    用到的包有:json-lib-2.2.3-jdk15.jar ezmorph-1.0.6.jar json.js jquery.js jsp页面的代码: 代码如下: &lt;&#37;@ page contentType=”text/html; charset=gbk”%&gt; &lt;&#37;@ taglib prefix=”s” uri=”/struts...

    java web开发简单BBS论坛系统

    java web开发简单BBS论坛系统,适合新手学习Java的一些基本知识,用到的技术有:spring+struts2+hibernate+jquery+json+jsp+servlet

    cascadeSelcte.rar

    编写了一个级联的下拉框,每次改变下拉框的值都会查询数据库,动态添加下拉框,里面用到了json数据格式,源文件是用Myeclipse工具编写的,导入后,发布到Tomcat直接可以运行,另外附带mysql数据库,直接把数据库导入...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    网上花店系统的设计与实现【源码+数据库】

    这是我的毕业设计,用到的语言有:jsp+java+struts+json+jquery+mysql数据库 这个项目有数据库,导入可以运行!这个项目有前台和后台,前台系统能实现购物车,订单,留言板,等模块!后台模块能实现用户管理,商品...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

Global site tag (gtag.js) - Google Analytics