Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a2ceb82

Browse files
committed
liaozb#1:优化数据库操作 支持0:MySql,1:SqlServer,2:Sqlite,3:Oracle,4:PostgreSQL
2:增加token登录 #
1 parent 3cfaef5 commit a2ceb82

13 files changed

+400
-290
lines changed

APIJSON.NET/APIJSON.NET/APIJSON.NET.csproj

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
</ItemGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Dapper" Version="1.50.5" />
13-
<PackageReference Include="Dapper.SqlBuilder" Version="1.50.5" />
1412
<PackageReference Include="Microsoft.AspNetCore.App" />
13+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.1.0" />
14+
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.0" />
1515
<PackageReference Include="MySql.Data" Version="8.0.11" />
16-
<PackageReference Include="Swashbuckle.AspNetCore" Version="2.5.0" />
17-
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="2.5.0" />
16+
<PackageReference Include="sqlSugarCore" Version="4.6.4.9" />
17+
<PackageReference Include="Swashbuckle.AspNetCore" Version="3.0.0" />
18+
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="3.0.0" />
1819
</ItemGroup>
1920

2021
</Project>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using Microsoft.AspNetCore.Authentication.JwtBearer;
2+
using Microsoft.Extensions.Configuration;
3+
using Microsoft.Extensions.DependencyInjection;
4+
using Microsoft.IdentityModel.Tokens;
5+
using System;
6+
using System.Collections.Generic;
7+
using System.Linq;
8+
using System.Text;
9+
using System.Threading.Tasks;
10+
namespace APIJSON.NET
11+
{
12+
public static class AuthConfigurer
13+
{
14+
public static void Configure(IServiceCollection services, IConfiguration configuration)
15+
{
16+
if (bool.Parse(configuration["Authentication:JwtBearer:IsEnabled"]))
17+
{
18+
services.AddAuthentication(sharedOptions =>
19+
{
20+
sharedOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
21+
sharedOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
22+
})
23+
.AddJwtBearer(options =>
24+
{
25+
options.Audience = configuration["Authentication:JwtBearer:Audience"];
26+
27+
options.TokenValidationParameters = new TokenValidationParameters
28+
{
29+
30+
ValidateIssuerSigningKey = true,
31+
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(configuration["Authentication:JwtBearer:SecurityKey"])),
32+
33+
ValidateIssuer = true,
34+
ValidIssuer = configuration["Authentication:JwtBearer:Issuer"],
35+
36+
37+
ValidateAudience = true,
38+
ValidAudience = configuration["Authentication:JwtBearer:Audience"],
39+
40+
41+
ValidateLifetime = true,
42+
43+
44+
ClockSkew = TimeSpan.Zero
45+
};
46+
47+
options.Events = new JwtBearerEvents
48+
{
49+
OnMessageReceived = QueryStringTokenResolver,
50+
51+
};
52+
});
53+
}
54+
}
55+
56+
private static Task QueryStringTokenResolver(MessageReceivedContext context)
57+
{
58+
59+
var qsAuthToken = context.Request.Headers["Authorization"].FirstOrDefault();
60+
if (qsAuthToken == null)
61+
{
62+
63+
return Task.CompletedTask;
64+
}
65+
qsAuthToken = qsAuthToken.Replace("Bearer ", "");
66+
67+
// context.Token = SimpleStringCipher.Instance.Decrypt(qsAuthToken, AppConsts.DefaultPassPhrase);
68+
return Task.CompletedTask;
69+
}
70+
}
71+
}

APIJSON.NET/APIJSON.NET/Controllers/ValuesController.cs renamed to APIJSON.NET/APIJSON.NET/Controllers/JsonController.cs

Lines changed: 41 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,24 @@
22
{
33
using System;
44
using System.Collections.Generic;
5-
using System.Data.SqlClient;
65
using System.Web;
7-
using Dapper;
86
using Microsoft.AspNetCore.Mvc;
97
using Microsoft.Extensions.Options;
108
using Newtonsoft.Json.Linq;
9+
using SqlSugar;
10+
1111
[Route("api/[controller]")]
1212
[ApiController]
1313
public class JsonController : ControllerBase
1414
{
15-
private DapperHelper db;
15+
private DbOptions _options;
1616
private JsonToSql sqlbuilder;
17-
public JsonController(DapperHelper helper, JsonToSql jsonToSql)
17+
private DbContext db;
18+
public JsonController(IOptions<DbOptions> options, JsonToSql jsonToSql, DbContext _db)
1819
{
19-
db = helper;
20+
_options = options.Value;
2021
sqlbuilder = jsonToSql;
22+
db = _db;
2123
}
2224
/// <summary>
2325
/// 查询
@@ -55,36 +57,35 @@ public ActionResult Query([FromBody]string json)
5557
if (tables.Count > 0)
5658
{
5759
string table = tables[0];
58-
var template = sqlbuilder.GetSqlBuilder(table, page, count, where[0], null);
59-
foreach (var dd in db.Query(template.RawSql, template.Parameters))
60+
var template = sqlbuilder.GetTableData(table, page, count, where[0], null);
61+
foreach (var dd in template)
6062
{
6163
var zht = new JObject();
6264
zht.Add(table, JToken.FromObject(dd));
6365
for (int i = 1; i < tables.Count; i++)
6466
{
6567
string subtable = tables[i];
66-
6768
if (tables[i].EndsWith("[]"))
6869
{
6970
subtable = tables[i].Replace("[]", "");
7071
var jbb = JObject.Parse(where[i]);
7172
page = jbb["page"] == null ? 0 : int.Parse(jbb["page"].ToString());
7273
count = jbb["count"] == null ? 0 : int.Parse(jbb["count"].ToString());
73-
template = sqlbuilder.GetSqlBuilder(subtable, page, count, jbb[subtable].ToString(), zht);
74+
template = sqlbuilder.GetTableData(subtable, page, count, jbb[subtable].ToString(), zht);
7475
var lt = new JArray();
75-
foreach (var d in db.Query( template.RawSql, template.Parameters))
76+
foreach (var d in template)
7677
{
7778
lt.Add(JToken.FromObject(d));
7879
}
7980
zht.Add(tables[i], lt);
8081
}
8182
else
8283
{
83-
template = sqlbuilder.GetSqlBuilder(subtable, 0, 0, where[i].ToString(), zht);
84-
var df = db.QueryFirstOrDefault( template.RawSql, template.Parameters);
85-
if (df != null)
84+
template = sqlbuilder.GetTableData(subtable, 0, 0, where[i].ToString(), zht);
85+
86+
if (template != null)
8687
{
87-
zht.Add(subtable, JToken.FromObject(df));
88+
zht.Add(subtable, JToken.FromObject(template));
8889
}
8990

9091
}
@@ -96,16 +97,16 @@ public ActionResult Query([FromBody]string json)
9697
}
9798
else if (key.EndsWith("[]"))
9899
{
99-
var builder = new SqlBuilder();
100+
100101
var htt = new JArray();
101102
var jb = JObject.Parse(item.Value.ToString());
102103
int page = jb["page"] == null ? 0 : int.Parse(jb["page"].ToString()), count = jb["count"] == null ? 0 : int.Parse(jb["count"].ToString());
103104
jb.Remove("page");
104105
jb.Remove("count");
105106
foreach (var t in jb)
106107
{
107-
var template = sqlbuilder.GetSqlBuilder(t.Key, page, count, t.Value.ToString(), null);
108-
foreach (var d in db.Query( template.RawSql, template.Parameters))
108+
var template = sqlbuilder.GetTableData(t.Key, page, count, t.Value.ToString(), null);
109+
foreach (var d in template)
109110
{
110111
htt.Add(JToken.FromObject(d));
111112
}
@@ -114,11 +115,10 @@ public ActionResult Query([FromBody]string json)
114115
}
115116
else
116117
{
117-
var template = sqlbuilder.GetSqlBuilder(key, 0, 0, item.Value.ToString(), ht);
118-
var df = db.QueryFirstOrDefault( template.RawSql, template.Parameters);
119-
if (df != null)
118+
var template = sqlbuilder.GetTableData(key, 0, 0, item.Value.ToString(), ht);
119+
if (template != null)
120120
{
121-
ht.Add(key, JToken.FromObject(df));
121+
ht.Add(key, JToken.FromObject(template));
122122
}
123123
}
124124
}
@@ -147,27 +147,20 @@ public ActionResult Add([FromBody]string json)
147147
{
148148
JObject jobject = JObject.Parse(json);
149149
var sb = new System.Text.StringBuilder(100);
150+
150151
foreach (var item in jobject)
151152
{
152153
string key = item.Key.Trim();
153-
sb.Append($"insert into [{key}](");
154-
var val = new System.Text.StringBuilder(100);
155-
val.Append($")values(");
156-
var p = new DynamicParameters();
154+
155+
var dt = new Dictionary<string, object>();
157156
foreach (var f in JObject.Parse(item.Value.ToString()))
158157
{
159-
sb.Append($"{f.Key},");
160-
val.Append($"@{f.Key},");
161-
p.Add($"@{f.Key}", f.Value.ToString());
158+
dt.Add(f.Key, f.Value);
162159
}
163-
string sql = sb.ToString().TrimEnd(',') + val.ToString().TrimEnd(',') + ");SELECT CAST(SCOPE_IDENTITY() as int);";
160+
161+
int id = db.Db.Insertable(dt).AS(key).ExecuteReturnIdentity();
162+
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id }));
164163

165-
using (var sqlConnection = db.Connection)
166-
{
167-
sqlConnection.Open();
168-
int id = sqlConnection.ExecuteScalar<int>(sql, p);
169-
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id }));
170-
}
171164
}
172165

173166
}
@@ -194,36 +187,28 @@ public ActionResult Edit([FromBody]string json)
194187
try
195188
{
196189
JObject jobject = JObject.Parse(json);
190+
197191
foreach (var item in jobject)
198192
{
199193
string key = item.Key.Trim();
200194
var value = JObject.Parse(item.Value.ToString());
201-
var sb = new System.Text.StringBuilder(100);
202-
203-
sb.Append($"update [{key}] set ");
204195
if (!value.ContainsKey("id"))
205196
{
206197
ht["code"] = "500";
207198
ht["msg"] = "未传主键id";
208199
break;
209200
}
210-
var p = new DynamicParameters();
201+
var dt = new Dictionary<string, object>();
202+
dt.Add("id", value["id"]);
211203
foreach (var f in value)
212204
{
213205
if (f.Key.ToLower() != "id")
214206
{
215-
sb.Append($"{f.Key}=@{f.Key},");
207+
dt.Add(f.Key, f.Value);
216208
}
217-
218-
p.Add($"@{f.Key}", f.Value.ToString());
219-
}
220-
string sql = sb.ToString().TrimEnd(',') + " where id=@id;";
221-
using (var sqlConnection = db.Connection)
222-
{
223-
sqlConnection.Open();
224-
sqlConnection.Execute(sql, p);
225-
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id = value["id"].ToString() }));
226209
}
210+
db.Db.Updateable(dt).AS(key).ExecuteCommand();
211+
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id = value["id"].ToString() }));
227212
}
228213
}
229214
catch (Exception ex)
@@ -249,33 +234,31 @@ public ActionResult Remove([FromBody]string json)
249234
try
250235
{
251236
JObject jobject = JObject.Parse(json);
237+
252238
foreach (var item in jobject)
253239
{
254240
string key = item.Key.Trim();
255241
var value = JObject.Parse(item.Value.ToString());
256242
var sb = new System.Text.StringBuilder(100);
257-
258243
sb.Append($"delete [{key}] where");
259244
if (!value.ContainsKey("id"))
260245
{
261246
ht["code"] = "500";
262247
ht["msg"] = "未传主键id";
263248
break;
264249
}
265-
var p = new DynamicParameters();
250+
var p = new List<SugarParameter>();
266251
foreach (var f in value)
267252
{
268253
sb.Append($"{f.Key}=@{f.Key},");
269254

270-
p.Add($"@{f.Key}", f.Value.ToString());
255+
p.Add(new SugarParameter($"@{f.Key}", f.Value.ToString()));
271256
}
257+
272258
string sql = sb.ToString().TrimEnd(',');
273-
using (var sqlConnection = db.Connection)
274-
{
275-
sqlConnection.Open();
276-
sqlConnection.Execute(sql, p);
277-
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id = value["id"].ToString() }));
278-
}
259+
db.Db.Ado.ExecuteCommand(sql, p);
260+
ht.Add(key, JToken.FromObject(new { code = 200, msg = "success", id = value["id"].ToString() }));
261+
279262
}
280263
}
281264
catch (Exception ex)

0 commit comments

Comments
 (0)