package org.nutz.weixin.at.impl;
import java.util.Map;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql;
import org.nutz.weixin.at.WxAccessToken;
import org.nutz.weixin.spi.WxAccessTokenStore;
public class DaoAccessTokenStore implements WxAccessTokenStore {
private Dao dao;
private Map<String, Object> params;
private String tableAccessToken = "access_token";
private String tableAccessTokenExpires = "access_token_expires";
private String tableAccessTokenLastat = "access_token_lastat";
private String fetch = "select access_token,access_token_expires,access_token_lastat from wx_config where id=@id";
private String update = "update wx_config set access_token=@access_token, access_token_expires=@access_token_expires, access_token_lastat=@access_token_lastat where id=@id";
public DaoAccessTokenStore() {
}
public DaoAccessTokenStore(Dao dao) {
super();
this.dao = dao;
}
@Override
public WxAccessToken get() {
Sql sql = Sqls.fetchRecord(fetch);
if (params != null)
sql.params().putAll(params);
dao.execute(sql);
Record record = sql.getObject(Record.class);
WxAccessToken at = new WxAccessToken();
at.setToken(record.getString(tableAccessToken));
at.setExpires(record.getInt(tableAccessTokenExpires));
at.setLastCacheTimeMillis(record.getLong(tableAccessTokenLastat));
return at;
}
@Override
public void save(String token, int time, long lastCacheTimeMillis) {
Sql sql = Sqls.create(update);
if (params != null)
sql.params().putAll(params);
sql.params().set(tableAccessToken, token);
sql.params().set(tableAccessTokenExpires, time);
sql.params().set(tableAccessTokenLastat, lastCacheTimeMillis);
dao.execute(sql);
}
public Dao getDao() {
return dao;
}
public void setDao(Dao dao) {
this.dao = dao;
}
public Map<String, Object> getParams() {
return params;
}
public void setParams(Map<String, Object> params) {
this.params = params;
}
public String getTableAccessToken() {
return tableAccessToken;
}
public void setTableAccessToken(String tableAccessToken) {
this.tableAccessToken = tableAccessToken;
}
public String getTableAccessTokenExpires() {
return tableAccessTokenExpires;
}
public void setTableAccessTokenExpires(String tableAccessTokenExpires) {
this.tableAccessTokenExpires = tableAccessTokenExpires;
}
public String getTableAccessTokenLastat() {
return tableAccessTokenLastat;
}
public void setTableAccessTokenLastat(String tableAccessTokenLastat) {
this.tableAccessTokenLastat = tableAccessTokenLastat;
}
public String getFetch() {
return fetch;
}
public void setFetch(String fetch) {
this.fetch = fetch;
}
public String getUpdate() {
return update;
}
public void setUpdate(String update) {
this.update = update;
}
}