package edu.fudan.weixin.actions; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; 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.TACOAuth2Model; import edu.fudan.weixin.utils.OperateResult; @ParentPackage("servicebase") public class UnbindAction extends GuestActionBase { /** * */ private static final long serialVersionUID = 7838893449325562995L; private String uisid; private List<DBObject> list; @SuppressWarnings("unchecked") @Action(value="unbind",results={@Result(location="binds.jsp")}) public String execute() { if(!CommonUtil.isEmpty(uisid)) { Object openid=getSession().get("openid"); if(!CommonUtil.isEmpty(openid)) { DBCollection c=MongoUtil.getInstance().getDB().getCollection("Bindings"); DBObject bd=c.findOne(new BasicDBObject("openid",openid)); if(!CommonUtil.isEmpty(bd)) { Object bns=bd.get("binds"); if(!CommonUtil.isEmpty(bns)) { Iterator<DBObject> i=((List<DBObject>)bns).iterator(); while(i.hasNext()) { DBObject o=i.next(); if(uisid.equals(o.get("uisid"))){ i.remove(); new TACOAuth2Model().revokeToken(o); } } c.save(bd); } } }else { addActionError(OperateResult.NOPRG.getErrdesc()); } }else { addActionError(OperateResult.BADREQ.getErrdesc()); } return SUCCESS; } @Action(value="bindlist",results={@Result(location="bindlist.jsp")}) public String list() { if(!CommonUtil.isEmpty(uisid)) { Object openid=getSession().get("openid"); if(!CommonUtil.isEmpty(openid)) { DBCollection c=MongoUtil.getInstance().getDB().getCollection("Bindings"); DBCollection w=MongoUtil.getInstance().getDB().getCollection("weixinuser"); DBCursor bd=c.find(new BasicDBObject("binds",new BasicDBObject("$elemMatch",new BasicDBObject("uisid",uisid)))); list=new ArrayList<DBObject> (); while(bd.hasNext()) { list.add(w.findOne(new BasicDBObject("openid",bd.next().get("openid")))); } }else { addActionError(OperateResult.NOPRG.getErrdesc()); } }else { addActionError(OperateResult.BADREQ.getErrdesc()); } return SUCCESS; } public List<DBObject> getList() { return list; } public void setList(List<DBObject> list) { this.list = list; } public String getUisid() { return uisid; } public void setUisid(String uisid) { this.uisid = uisid; } }