package edu.fudan.weixin.actions;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import edu.fudan.eservice.common.struts.GuestActionBase;
import edu.fudan.eservice.common.utils.CommonUtil;
import edu.fudan.eservice.common.utils.MongoUtil;
import edu.fudan.weixin.model.message.StaticMessageBuilder;
import edu.fudan.weixin.utils.OperateResult;
@ParentPackage("servicebase")
@Results({@Result(type="json",params={"root","result"})})
public class BookAction extends GuestActionBase {
/**
*
*/
private static final long serialVersionUID = 6289673478650624253L;
private Map<String,Object> items;
private String item;
private boolean book;
private float threshold;
private String authurl;
private OperateResult result;
@Action("book")
public String execute()
{
Object openid=getSession().get("openid");
if(CommonUtil.isEmpty(openid))
{
result=OperateResult.NOPRG;
}else
{
if(CommonUtil.isEmpty(item))
result=OperateResult.BADREQ;
else
{
DBCollection c=MongoUtil.getInstance().getDB().getCollection("Books");
BasicDBObject dbo=new BasicDBObject("openid",openid).append("item", item);
DBObject o=c.findOne(dbo);
if(book&&CommonUtil.isEmpty(o))
{
c.save(dbo.append("booktime", System.currentTimeMillis()).append("book", book).append("threshold", threshold));
}
if(!CommonUtil.isEmpty(o))
{
if(!CommonUtil.eq(o.get("book"), book)){
o.put("booktime", System.currentTimeMillis());}
o.put("book", book);
o.put("threshold",threshold);
c.save(o);
}
result=OperateResult.OK;
}
}
return SUCCESS;
}
@Action(value="booklist",results={@Result(location="booklist.jsp")})
public String list()
{
Object openid=getSession().get("openid");
DBCursor cs=MongoUtil.getInstance().getDB().getCollection("Books").find(new BasicDBObject("openid",openid).append("book",true));
items=new HashMap<String,Object>();
while(cs.hasNext())
{
DBObject obj=cs.next();
items.put(obj.get("item").toString(), obj.get("threshold"));
}
authurl=StaticMessageBuilder.buildScopeUrl();
return SUCCESS;
}
public Map<String, Object> getItems() {
return items;
}
public void setItems(Map<String, Object> items) {
this.items = items;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public boolean isBook() {
return book;
}
public void setBook(boolean book) {
this.book = book;
}
public OperateResult getResult() {
return result;
}
public void setResult(OperateResult result) {
this.result = result;
}
public float getThreshold() {
return threshold;
}
public void setThreshold(float threshold) {
this.threshold = threshold;
}
public String getAuthurl() {
return authurl;
}
public void setAuthurl(String authurl) {
this.authurl = authurl;
}
}