資源簡介
實例源碼,簽到沒實現重復簽到,考慮到用于考勤,可以提取第一次簽到和最后一次簽到做為上班和下班考勤。可根據經緯度和公司的經緯度計算距離來實現是否在公司操作的。
有三個表,cache做緩存,臨時記錄token,這個可以改用iis的cache或者其他keyvalue數據庫。location表記錄兩種來源的地理位置信息。sign表記錄簽到信息。
因為偷懶,沒建立業務層項目,部分業務邏輯混合到數據層,大家可以自己整理。
有完整的業務代碼,學習微信開發難得的參考資料。涉及到js-sdk\accesstoken、簽名等

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Data;
using?System.Data.SqlClient;
using?DotNetOpenAuth.SDK;
namespace?DotNetOpenAuth.DataAccess
{//來自:http://www.DotNetOpenAuth.com
????public?class?Caches
????{
????????///?
????????///?添加緩存,如果存在則更新
????????///?
????????///?
????????///?
????????///?
????????///?
????????public?static?int?AddCache(string?name?string?itemValue?int?expires)
????????{
????????????try
????????????{
????????????????string?sqlStr?=?@“IF?EXISTS(SELECT?id?FROM?wxCache?WHERE?Name=@Name)
BEGIN
UPDATE?wxCache?SET?ItemValue=@ItemValueExpires=@Expires?WHERE?Name=@Name
END
ELSE
BEGIN
INSERT?INTO?wxCache?VALUES(@Name@ItemValue@Expires)
END
;SELECT?@@IDENTITY“;
????????????????SqlParameter[]?Params?=?new?SqlParameter[3];
????????????????Params[0]?=?new?SqlParameter()?{?ParameterName?=?“@Name“?SqlDbType?=?SqlDbType.VarChar?Value?=?name?Direction?=?ParameterDirection.Input?};
????????????????Params[1]?=?new?SqlParameter()?{?ParameterName?=?“@ItemValue“?SqlDbType?=?SqlDbType.VarChar?Value?=?itemValue?Direction?=?ParameterDirection.Input?};
????????????????Params[2]?=?new?SqlParameter()?{?ParameterName?=?“@Expires“?SqlDbType?=?SqlDbType.VarChar?Value?=?expires.ToString()?Direction?=?ParameterDirection.Input?};
???????????????
????????????????return?Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.Conn?CommandType.Text?sqlStr?Params));
????????????}
????????????catch
????????????{
????????????}
????????????return?0;
????????}
????????public?static?string?GetAccessToken(string?corpid?string?corpsecret)
????????{
????????????AccessToken?at?=?new?AccessToken();
????????????at.errcode?=?-1;
????????????string?sql?=?“SELECT?TOP?1?ItemValueExpires?FROM?wxCache?WHERE?Name=‘access_token‘“;
????????????DataTable?dt?=?SqlHelper.ExecuteDataset(SqlHelper.Conn?CommandType.Text?sql).Tables[0];
????????????bool?result?=?false;
????????????if?(dt?!=?null)
????????????{
????????????????try
????????????????{
????????????????????if?(dt.Rows.Count?>?0)
????????????????????{
????????????????????????at.expires_in?=?Convert.ToInt32(dt.Rows[0][“Expires“]);
????????????????????????if?(at.expires_in?*?1000?>?OpenApi.GetTime())
????????????????????????{
????????????????????????????at.errcode?=?0;
????????????????????????????at.errmsg?=?“ok“;
????????????????????????????at.access_token?=?dt.Rows[0][“ItemValue“].ToString();
????????????????????????????result?=?true;
????????????????????????}???????????????????????
????????????????????}
????????????????}
????????????????catch
????????????????{
????????????????}
????????????????finally
????????????????{
????????????????????dt.Dispose();
????????????????}
????????????}
????????????if(!result)
????????????{
????????????????at?=?OpenApi.GetAccessToken(corpid?corpsecret);
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-06-02?10:33??DotNetOpenAuth.DataAccess\
?????目錄???????????0??2015-05-29?10:58??DotNetOpenAuth.DataAccess\bin\
?????目錄???????????0??2015-06-02?13:59??DotNetOpenAuth.DataAccess\bin\Debug\
?????文件???????28672??2015-06-02?13:59??DotNetOpenAuth.DataAccess\bin\Debug\DotNetOpenAuth.DataAccess.dll
?????文件???????69120??2015-06-02?13:59??DotNetOpenAuth.DataAccess\bin\Debug\DotNetOpenAuth.DataAccess.pdb
?????文件???????17408??2015-06-02?13:59??DotNetOpenAuth.DataAccess\bin\Debug\DotNetOpenAuth.SDK.dll
?????文件???????36352??2015-06-02?13:59??DotNetOpenAuth.DataAccess\bin\Debug\DotNetOpenAuth.SDK.pdb
?????目錄???????????0??2015-05-29?10:58??DotNetOpenAuth.DataAccess\bin\Release\
?????文件????????4979??2015-06-02?13:44??DotNetOpenAuth.DataAccess\Caches.cs
?????文件????????2794??2015-06-02?10:35??DotNetOpenAuth.DataAccess\DotNetOpenAuth.DataAccess.csproj
?????文件????????3331??2015-06-02?10:40??DotNetOpenAuth.DataAccess\Location.cs
?????目錄???????????0??2015-05-29?10:55??DotNetOpenAuth.DataAccess\obj\
?????目錄???????????0??2015-06-02?13:59??DotNetOpenAuth.DataAccess\obj\Debug\
?????文件????????6449??2015-06-02?10:33??DotNetOpenAuth.DataAccess\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件?????????670??2015-06-02?13:59??DotNetOpenAuth.DataAccess\obj\Debug\DotNetOpenAuth.DataAccess.csproj.FileListAbsolute.txt
?????文件????????7107??2015-06-02?13:59??DotNetOpenAuth.DataAccess\obj\Debug\DotNetOpenAuth.DataAccess.csprojResolveAssemblyReference.cache
?????文件???????28672??2015-06-02?13:59??DotNetOpenAuth.DataAccess\obj\Debug\DotNetOpenAuth.DataAccess.dll
?????文件???????69120??2015-06-02?13:59??DotNetOpenAuth.DataAccess\obj\Debug\DotNetOpenAuth.DataAccess.pdb
?????目錄???????????0??2015-05-29?10:55??DotNetOpenAuth.DataAccess\obj\Debug\TempPE\
?????目錄???????????0??2015-05-29?10:55??DotNetOpenAuth.DataAccess\Properties\
?????文件????????1370??2015-05-29?10:55??DotNetOpenAuth.DataAccess\Properties\AssemblyInfo.cs
?????文件????????1887??2015-06-02?13:57??DotNetOpenAuth.DataAccess\Sign.cs
?????文件??????153017??2015-05-29?13:33??DotNetOpenAuth.DataAccess\SqlHelper.cs
?????目錄???????????0??2015-06-02?14:03??DotNetOpenAuth.Document\
?????文件?????????429??2015-05-26?17:20??DotNetOpenAuth.Document\Readme.txt
?????文件????????7987??2015-05-26?17:23??DotNetOpenAuth.Document\Sample.cs
?????文件????????4259??2015-06-02?10:47??DotNetOpenAuth.Document\數據表.SQL
?????目錄???????????0??2015-06-02?10:35??DotNetOpenAuth.SDK\
?????目錄???????????0??2015-05-26?15:36??DotNetOpenAuth.SDK\bin\
?????目錄???????????0??2015-06-02?13:59??DotNetOpenAuth.SDK\bin\Debug\
?????文件???????27136??2015-05-26?16:13??DotNetOpenAuth.SDK\bin\Debug\DotNetOpenAuth.dll
............此處省略66個文件信息
- 上一篇:kmeans算法-采用c#實現
- 下一篇:C#實現磁盤調度算法
評論
共有 條評論