12
12
using APIJSON . NET . Services ;
13
13
using System . Reflection ;
14
14
using Microsoft . AspNetCore . Cors ;
15
+ using System . Threading . Tasks ;
16
+ using System . IO ;
17
+ using System . Text ;
18
+ using System . Net . Http ;
15
19
16
20
[ Route ( "api/[controller]" ) ]
17
21
[ ApiController ]
@@ -22,153 +26,72 @@ public class JsonController : ControllerBase
22
26
private SelectTable selectTable ;
23
27
private DbContext db ;
24
28
private readonly IIdentityService _identitySvc ;
25
- public JsonController ( SelectTable _selectTable , DbContext _db , IIdentityService identityService )
26
- {
29
+ private ITableMapper _tableMapper ;
27
30
28
- selectTable = _selectTable ;
31
+ public JsonController ( IIdentityService identityService , ITableMapper tableMapper , DbContext _db )
32
+ {
29
33
db = _db ;
34
+ _tableMapper = tableMapper ;
30
35
_identitySvc = identityService ;
36
+ selectTable = new SelectTable ( _identitySvc , _tableMapper , _db . Db ) ;
37
+ }
38
+
39
+ /// <summary>
40
+ ///
41
+ /// </summary>
42
+ /// <returns></returns>
43
+ [ HttpGet ( "/test" ) ]
44
+ public ActionResult Test ( )
45
+ {
46
+ string str = "{\" page\" :1,\" count\" :3,\" query\" :2,\" Org\" :{\" @column\" :\" Id,Name\" }}" ;
47
+ var content = new StringContent ( str ) ;
48
+ return Ok ( content ) ;
31
49
}
32
-
50
+
33
51
/// <summary>
34
52
/// 查询
35
53
/// </summary>
36
54
/// <param name="json"></param>
37
55
/// <returns></returns>
38
56
[ HttpPost ( "/get" ) ]
39
57
40
- public ActionResult Query ( [ FromBody ] JObject jobject )
58
+ public async Task < ActionResult > Query ( [ FromBody ] JObject jobject )
41
59
{
42
- JObject ht = new JObject ( ) ;
43
- ht . Add ( "code" , "200" ) ;
44
- ht . Add ( "msg" , "success" ) ;
45
- try
46
- {
47
- int page = 0 , count = 0 , query = 0 , total = 0 ;
48
- foreach ( var item in jobject )
49
- {
50
- string key = item . Key . Trim ( ) ;
51
- JObject jb ;
52
- if ( key . Equals ( "[]" ) )
53
- {
54
- jb = JObject . Parse ( item . Value . ToString ( ) ) ;
55
- page = jb [ "page" ] == null ? 0 : int . Parse ( jb [ "page" ] . ToString ( ) ) ;
56
- count = jb [ "count" ] == null ? 0 : int . Parse ( jb [ "count" ] . ToString ( ) ) ;
57
- query = jb [ "query" ] == null ? 0 : int . Parse ( jb [ "query" ] . ToString ( ) ) ;
58
- jb . Remove ( "page" ) ; jb . Remove ( "count" ) ; jb . Remove ( "query" ) ;
59
- var htt = new JArray ( ) ;
60
- List < string > tables = new List < string > ( ) , where = new List < string > ( ) ;
61
- foreach ( var t in jb )
62
- {
63
- tables . Add ( t . Key ) ; where . Add ( t . Value . ToString ( ) ) ;
64
- }
65
- if ( tables . Count > 0 )
66
- {
67
- string table = tables [ 0 ] ;
68
- var temp = selectTable . GetTableData ( table , page , count , where [ 0 ] , null ) ;
69
- if ( query > 0 )
70
- {
71
- total = temp . Item2 ;
72
- }
73
-
74
- foreach ( var dd in temp . Item1 )
75
- {
76
- var zht = new JObject ( ) ;
77
- zht . Add ( table , JToken . FromObject ( dd ) ) ;
78
- for ( int i = 1 ; i < tables . Count ; i ++ )
79
- {
80
- string subtable = tables [ i ] ;
81
- if ( subtable . EndsWith ( "[]" ) )
82
- {
83
- subtable = subtable . TrimEnd ( "[]" . ToCharArray ( ) ) ;
84
- var jbb = JObject . Parse ( where [ i ] ) ;
85
- page = jbb [ "page" ] == null ? 0 : int . Parse ( jbb [ "page" ] . ToString ( ) ) ;
86
- count = jbb [ "count" ] == null ? 0 : int . Parse ( jbb [ "count" ] . ToString ( ) ) ;
60
+ JObject resultJobj = new SelectTable ( _identitySvc , _tableMapper , db . Db ) . Query ( jobject ) ;
61
+ return Ok ( resultJobj ) ;
62
+ }
87
63
88
- var lt = new JArray ( ) ;
89
- foreach ( var d in selectTable . GetTableData ( subtable , page , count , jbb [ subtable ] . ToString ( ) , zht ) . Item1 )
90
- {
91
- lt . Add ( JToken . FromObject ( d ) ) ;
92
- }
93
- zht . Add ( tables [ i ] , lt ) ;
94
- }
95
- else
96
- {
97
- var ddf = selectTable . GetFirstData ( subtable , where [ i ] . ToString ( ) , zht ) ;
98
- if ( ddf != null )
99
- {
100
- zht . Add ( subtable , JToken . FromObject ( ddf ) ) ;
64
+ [ HttpPost ( "/{table}" ) ]
65
+ public async Task < ActionResult > QueryByTable ( [ FromRoute ] string table )
66
+ {
67
+ string json = string . Empty ;
68
+ using ( StreamReader reader = new StreamReader ( Request . Body , Encoding . UTF8 ) )
69
+ {
70
+ json = await reader . ReadToEndAsync ( ) ;
71
+ }
101
72
102
- }
103
- }
104
- }
105
- htt . Add ( zht ) ;
106
- }
73
+ json = HttpUtility . UrlDecode ( json ) ;
74
+ JObject ht = new JObject ( ) ;
107
75
108
- }
109
- if ( query != 1 )
110
- {
111
- ht . Add ( "[]" , htt ) ;
112
- }
113
- }
114
- else if ( key . EndsWith ( "[]" ) )
115
- {
116
- jb = JObject . Parse ( item . Value . ToString ( ) ) ;
117
- page = jb [ "page" ] == null ? 0 : int . Parse ( jb [ "page" ] . ToString ( ) ) ;
118
- count = jb [ "count" ] == null ? 0 : int . Parse ( jb [ "count" ] . ToString ( ) ) ;
119
- query = jb [ "query" ] == null ? 0 : int . Parse ( jb [ "query" ] . ToString ( ) ) ;
120
- jb . Remove ( "page" ) ; jb . Remove ( "count" ) ; jb . Remove ( "query" ) ;
121
- var htt = new JArray ( ) ;
122
- foreach ( var t in jb )
123
- {
124
- foreach ( var d in selectTable . GetTableData ( t . Key , page , count , t . Value . ToString ( ) , null ) . Item1 )
125
- {
126
- htt . Add ( JToken . FromObject ( d ) ) ;
127
- }
128
- }
129
- ht . Add ( key , htt ) ;
130
- }
131
- else if ( key . Equals ( "func" ) )
132
- {
133
- jb = JObject . Parse ( item . Value . ToString ( ) ) ;
134
- Type type = typeof ( FuncList ) ;
135
- Object obj = Activator . CreateInstance ( type ) ;
136
- var bb = new JObject ( ) ;
137
- foreach ( var f in jb )
138
- {
139
- var types = new List < Type > ( ) ;
140
- var param = new List < object > ( ) ;
141
- foreach ( var va in JArray . Parse ( f . Value . ToString ( ) ) )
142
- {
143
- types . Add ( typeof ( object ) ) ;
144
- param . Add ( va ) ;
145
- }
146
- bb . Add ( f . Key , JToken . FromObject ( selectTable . ExecFunc ( f . Key , param . ToArray ( ) , types . ToArray ( ) ) ) ) ;
147
- }
148
- ht . Add ( "func" , bb ) ;
149
- }
150
- else if ( key . Equals ( "total@" ) )
151
- {
152
- ht . Add ( "total" , total ) ;
153
- }
154
- else
155
- {
156
- var template = selectTable . GetFirstData ( key , item . Value . ToString ( ) , ht ) ;
157
- if ( template != null )
158
- {
159
- ht . Add ( key , JToken . FromObject ( template ) ) ;
160
- }
161
- }
76
+ JObject jobject = JObject . Parse ( json ) ;
77
+ ht . Add ( table + "[]" , jobject ) ;
78
+ ht . Add ( "total@" , "" ) ;
162
79
80
+ bool hasTableKey = false ;
81
+ foreach ( var item in jobject )
82
+ {
83
+ if ( item . Key . Equals ( table , StringComparison . CurrentCultureIgnoreCase ) )
84
+ {
85
+ hasTableKey = true ;
86
+ break ;
163
87
}
164
88
}
165
- catch ( Exception ex )
89
+ if ( ! hasTableKey )
166
90
{
167
- ht [ "code" ] = "500" ;
168
- ht [ "msg" ] = ex . Message ;
169
-
91
+ jobject . Add ( table , new JObject ( ) ) ;
170
92
}
171
- return Ok ( ht ) ;
93
+
94
+ return await Query ( ht ) ;
172
95
}
173
96
/// <summary>
174
97
/// 新增
@@ -178,14 +101,14 @@ public ActionResult Query([FromBody] JObject jobject)
178
101
[ HttpPost ( "/add" ) ]
179
102
public ActionResult Add ( [ FromBody ] JObject jobject )
180
103
{
181
-
104
+
182
105
JObject ht = new JObject ( ) ;
183
106
ht . Add ( "code" , "200" ) ;
184
107
ht . Add ( "msg" , "success" ) ;
185
108
try
186
109
{
187
-
188
-
110
+
111
+
189
112
190
113
foreach ( var item in jobject )
191
114
{
@@ -248,12 +171,12 @@ public ActionResult Edit([FromBody]JObject jobject)
248
171
var dt = new Dictionary < string , object > ( ) ;
249
172
foreach ( var f in value )
250
173
{
251
- if ( f . Key . ToLower ( ) != "id" && selectTable . IsCol ( key , f . Key ) && ( role . Update . Column . Contains ( "*" ) || role . Update . Column . Contains ( f . Key , StringComparer . CurrentCultureIgnoreCase ) ) )
174
+ if ( f . Key . ToLower ( ) != "id" && selectTable . IsCol ( key , f . Key ) && ( role . Update . Column . Contains ( "*" ) || role . Update . Column . Contains ( f . Key , StringComparer . CurrentCultureIgnoreCase ) ) )
252
175
{
253
176
dt . Add ( f . Key , f . Value . ToString ( ) ) ;
254
177
}
255
178
}
256
- db . Db . Updateable ( dt ) . AS ( key ) . Where ( "id=@id" , new { id = value [ "id" ] . ToString ( ) } ) . ExecuteCommand ( ) ;
179
+ db . Db . Updateable ( dt ) . AS ( key ) . Where ( "id=@id" , new { id = value [ "id" ] . ToString ( ) } ) . ExecuteCommand ( ) ;
257
180
ht . Add ( key , JToken . FromObject ( new { code = 200 , msg = "success" , id = value [ "id" ] . ToString ( ) } ) ) ;
258
181
}
259
182
}
@@ -285,13 +208,13 @@ public ActionResult Remove([FromBody]JObject jobject)
285
208
var value = JObject . Parse ( item . Value . ToString ( ) ) ;
286
209
var sb = new System . Text . StringBuilder ( 100 ) ;
287
210
sb . Append ( $ "delete FROM { key } where ") ;
288
- if ( role . Delete == null || role . Delete . Table == null )
211
+ if ( role . Delete == null || role . Delete . Table == null )
289
212
{
290
213
ht [ "code" ] = "500" ;
291
214
ht [ "msg" ] = "delete权限未配置" ;
292
215
break ;
293
216
}
294
- if ( ! role . Delete . Table . Contains ( key , StringComparer . CurrentCultureIgnoreCase ) )
217
+ if ( ! role . Delete . Table . Contains ( key , StringComparer . CurrentCultureIgnoreCase ) )
295
218
{
296
219
ht [ "code" ] = "500" ;
297
220
ht [ "msg" ] = $ "没权限删除{ key } ";
0 commit comments