Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a2ceb82

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

File tree

13 files changed

+400
-290
lines changed

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 DapperHelperdb;
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-
vardf=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-
varbuilder=newSqlBuilder();
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(newSugarParameter($"@{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)

AltStyle によって変換されたページ (->オリジナル) /