资源简介
实例源码,签到没实现重复签到,考虑到用于考勤,可以提取第一次签到和最后一次签到做为上班和下班考勤。可根据经纬度和公司的经纬度计算距离来实现是否在公司操作的。
有三个表,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#实现磁盘调度算法
评论
共有 条评论