UserService.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. using Agent.Models;
  2. using Dapper;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using System.Configuration;
  6. using System.Diagnostics;
  7. using log4net;
  8. using System;
  9. using System.Windows;
  10. namespace Agent.Services
  11. {
  12. class UserService
  13. {
  14. private static readonly ILog log = LogManager.GetLogger(typeof(UserService));
  15. private readonly DriveService _driveService = new DriveService();
  16. private readonly StartupService _startupService = new StartupService();
  17. /// <summary>
  18. /// 사용자 조회
  19. /// </summary>
  20. /// <param name="userId"></param>
  21. /// <returns></returns>
  22. public User GetUser(string userId)
  23. {
  24. try
  25. {
  26. var sql = @"
  27. SELECT top 1 [tid]
  28. ,[id]
  29. ,[password]
  30. ,[name]
  31. ,[create_date]
  32. ,[is_ad]
  33. ,[is_startup]
  34. ,[is_retry]
  35. ,[is_limit]
  36. ,[is_hash]
  37. ,[backup_type]
  38. ,[tag1]
  39. ,[tag2]
  40. ,[tag3]
  41. ,[tag4]
  42. ,[tag5]
  43. ,[tag6]
  44. ,[tag7]
  45. ,[tag8]
  46. ,[tag9]
  47. ,[tag10]
  48. FROM [di_user]
  49. WHERE id = @UserId
  50. ";
  51. using (var con = new SqlConnection(App._myConnection))
  52. {
  53. con.Open();
  54. return con.Query<User>(sql, new { UserId = userId }).SingleOrDefault();
  55. }
  56. }
  57. catch (Exception e)
  58. {
  59. log.Error(e);
  60. return null;
  61. }
  62. }
  63. public User LoginCheck(string userId, string sysplantcd)
  64. {
  65. try
  66. {
  67. var sql = @"
  68. SELECT [user_id] as id
  69. ,[emp_cd] as emp_cd
  70. ,[user_passwd] as Password
  71. ,[user_nm] as name
  72. ,[di_user_yn] as Di_Auth
  73. FROM [dbo].[menu_user]
  74. WHERE user_id = @UserId
  75. AND sys_plant_cd = @sys_plant_cd
  76. ";
  77. using (var con = new SqlConnection(App._myConnection))
  78. {
  79. con.Open();
  80. return con.Query<User>(sql, new { UserId = userId, sys_plant_cd = sysplantcd }).SingleOrDefault();
  81. }
  82. }
  83. catch (Exception e)
  84. {
  85. log.Error(e);
  86. return null;
  87. }
  88. }
  89. /// <summary>
  90. /// 아이디(시리얼키) 중복체크
  91. /// </summary>
  92. /// <param name="id"></param>
  93. /// <returns></returns>
  94. public bool IsDuplicate(string id)
  95. {
  96. try
  97. {
  98. using (var con = new SqlConnection(App._myConnection))
  99. {
  100. con.Open();
  101. var sql = @"
  102. SELECT COUNT(*)
  103. FROM [di_user]
  104. WHERE id = @Id
  105. ";
  106. return 0 < con.Query<int>(sql, new { Id = id }).SingleOrDefault();
  107. }
  108. }
  109. catch (Exception e)
  110. {
  111. log.Error(e);
  112. return true;
  113. }
  114. }
  115. /// <summary>
  116. /// 사용자 가입
  117. /// </summary>
  118. /// <param name="id"></param>
  119. /// <param name="name"></param>
  120. /// <param name="isStartup"></param>
  121. /// <returns></returns>
  122. public User JoinUser(string id, string name, bool isStartup)
  123. {
  124. try
  125. {
  126. using (var con = new SqlConnection(App._myConnection))
  127. {
  128. con.Open();
  129. var sql = @"
  130. INSERT INTO [di_user]
  131. ([id]
  132. ,[name]
  133. ,[create_date]
  134. ,[is_ad]
  135. ,[is_startup]
  136. ,[is_retry]
  137. ,[is_limit]
  138. ,[is_hash]
  139. ,[backup_type]
  140. ,[tag1]
  141. ,[tag2]
  142. ,[tag3]
  143. ,[tag4]
  144. ,[tag5]
  145. ,[tag6]
  146. ,[tag7]
  147. ,[tag8]
  148. ,[tag9]
  149. ,[tag10]
  150. ,[sys_plant_cd]
  151. )
  152. OUTPUT
  153. INSERTED.tid AS tid
  154. ,INSERTED.id AS id
  155. ,INSERTED.password AS password
  156. ,INSERTED.name AS name
  157. ,INSERTED.create_date AS create_date
  158. ,INSERTED.is_ad AS is_ad
  159. ,INSERTED.is_startup AS is_startup
  160. ,INSERTED.is_retry AS is_retry
  161. ,INSERTED.is_limit AS is_limit
  162. ,INSERTED.is_hash AS is_hash
  163. ,INSERTED.backup_type AS backup_type
  164. ,INSERTED.[tag1]
  165. ,INSERTED.[tag2]
  166. ,INSERTED.[tag3]
  167. ,INSERTED.[tag4]
  168. ,INSERTED.[tag5]
  169. ,INSERTED.[tag6]
  170. ,INSERTED.[tag7]
  171. ,INSERTED.[tag8]
  172. ,INSERTED.[tag9]
  173. ,INSERTED.[tag10]
  174. ,INSERTED.[sys_plant_cd]
  175. VALUES
  176. (@Id
  177. ,@Name
  178. ,GETDATE()
  179. ,0
  180. ,@IsStartup
  181. ,1
  182. ,1
  183. ,1
  184. ,@BackupType
  185. ,@Tag1
  186. ,@Tag2
  187. ,@Tag3
  188. ,@Tag4
  189. ,@Tag5
  190. ,@Tag6
  191. ,@Tag7
  192. ,@Tag8
  193. ,@Tag9
  194. ,@Tag10
  195. ,@sysPlantCd
  196. )
  197. ";
  198. var data = new {
  199. Id = id,
  200. Name = name,
  201. IsStartup = isStartup,
  202. BackupType = "REAL_TIME",
  203. Tag1 = "TAG1",
  204. Tag2 = "TAG2",
  205. Tag3 = "TAG3",
  206. Tag4 = "TAG4",
  207. Tag5 = "TAG5",
  208. Tag6 = "TAG6",
  209. Tag7 = "TAG7",
  210. Tag8 = "TAG8",
  211. Tag9 = "TAG9",
  212. Tag10 = "TAG10",
  213. sysPlantCd = App._sysPlantCd
  214. };
  215. return con.Query<User>(sql, data).SingleOrDefault();
  216. }
  217. }
  218. catch(Exception e)
  219. {
  220. log.Error(e);
  221. return null;
  222. }
  223. }
  224. /// <summary>
  225. /// 사용자 조회 및 가입
  226. /// </summary>
  227. /// <returns></returns>
  228. public User GetUserWithJoin()
  229. {
  230. var key = _driveService.GetKey();
  231. var user = GetUser(key);
  232. var isStartup = _startupService.IsRegist();
  233. if (null == user)
  234. {
  235. return JoinUser(key, Environment.MachineName, isStartup);
  236. }
  237. return user;
  238. }
  239. /// <summary>
  240. /// 사용자정보 메모리에 저장
  241. /// </summary>
  242. /// <param name="user"></param>
  243. public void SaveUserProperties(User user)
  244. {
  245. Application.Current.Properties["user_tid"] = user.Tid;
  246. Application.Current.Properties["user_id"] = user.Id;
  247. Application.Current.Properties["user_name"] = user.Name;
  248. Application.Current.Properties["user_create_date"] = user.Create_Date;
  249. Application.Current.Properties["user_is_startup"] = user.Is_Startup;
  250. Application.Current.Properties["user_is_retry"] = user.Is_Retry;
  251. Application.Current.Properties["user_is_limit"] = user.Is_Limit;
  252. Application.Current.Properties["user_is_hash"] = user.Is_Hash;
  253. Application.Current.Properties["user_backup_type"] = user.Backup_type;
  254. Application.Current.Properties["user_tag1"] = user.Tag1;
  255. Application.Current.Properties["user_tag2"] = user.Tag2;
  256. Application.Current.Properties["user_tag3"] = user.Tag3;
  257. Application.Current.Properties["user_tag4"] = user.Tag4;
  258. Application.Current.Properties["user_tag5"] = user.Tag5;
  259. Application.Current.Properties["user_tag6"] = user.Tag6;
  260. Application.Current.Properties["user_tag7"] = user.Tag7;
  261. Application.Current.Properties["user_tag8"] = user.Tag8;
  262. Application.Current.Properties["user_tag9"] = user.Tag9;
  263. Application.Current.Properties["user_tag10"] = user.Tag10;
  264. }
  265. /// <summary>
  266. /// 사용자정보 갱신
  267. /// </summary>
  268. /// <param name="isStartup"></param>
  269. /// <param name="isRetry"></param>
  270. /// <param name="isLimit"></param>
  271. /// <param name="isHash"></param>
  272. /// <param name="backupType"></param>
  273. /// <param name="userName"></param>
  274. /// <returns></returns>
  275. public User ModifyUser(bool isStartup, bool isRetry, bool isLimit, bool isHash, string backupType, string userName,
  276. string tag1, string tag2, string tag3, string tag4, string tag5,
  277. string tag6, string tag7, string tag8, string tag9, string tag10)
  278. {
  279. try
  280. {
  281. var userTid = Application.Current.Properties["user_tid"];
  282. using (var con = new SqlConnection(App._myConnection))
  283. {
  284. con.Open();
  285. var sql = @"
  286. UPDATE [di_user ]
  287. SET [is_startup] = @IsStartup
  288. ,[is_retry] = @IsRetry
  289. ,[is_limit] = @IsLimit
  290. ,[is_hash] = @IsHash
  291. ,[backup_type] = @BackupType
  292. ,[name] = @UserName
  293. ,[tag1] = @Tag1
  294. ,[tag2] = @Tag2
  295. ,[tag3] = @Tag3
  296. ,[tag4] = @Tag4
  297. ,[tag5] = @Tag5
  298. ,[tag6] = @Tag6
  299. ,[tag7] = @Tag7
  300. ,[tag8] = @Tag8
  301. ,[tag9] = @Tag9
  302. ,[tag10] = @Tag10
  303. OUTPUT
  304. INSERTED.[tid]
  305. ,INSERTED.[id]
  306. ,INSERTED.[password]
  307. ,INSERTED.[name]
  308. ,INSERTED.[create_date]
  309. ,INSERTED.[is_ad]
  310. ,INSERTED.[is_startup]
  311. ,INSERTED.[is_retry]
  312. ,INSERTED.[is_limit]
  313. ,INSERTED.[is_hash]
  314. ,INSERTED.[backup_type]
  315. ,INSERTED.[tag1]
  316. ,INSERTED.[tag2]
  317. ,INSERTED.[tag3]
  318. ,INSERTED.[tag4]
  319. ,INSERTED.[tag5]
  320. ,INSERTED.[tag6]
  321. ,INSERTED.[tag7]
  322. ,INSERTED.[tag8]
  323. ,INSERTED.[tag9]
  324. ,INSERTED.[tag10]
  325. WHERE tid = @UserTid
  326. ";
  327. var data = new
  328. {
  329. IsStartup = isStartup,
  330. IsRetry = isRetry,
  331. IsLimit = isLimit,
  332. IsHash = isHash,
  333. BackupType = backupType,
  334. UserTid = userTid,
  335. UserName = userName,
  336. Tag1 = tag1,
  337. Tag2 = tag2,
  338. Tag3 = tag3,
  339. Tag4 = tag4,
  340. Tag5 = tag5,
  341. Tag6 = tag6,
  342. Tag7 = tag7,
  343. Tag8 = tag8,
  344. Tag9 = tag9,
  345. Tag10 = tag10,
  346. };
  347. return con.Query<User>(sql, data).SingleOrDefault();
  348. }
  349. }
  350. catch (Exception e)
  351. {
  352. log.Error(e);
  353. return null;
  354. }
  355. }
  356. public User Insert_insertAT(string Gubun, string id, string remark, int usertid)
  357. {
  358. try
  359. {
  360. using (var con = new SqlConnection(App._myConnection))
  361. {
  362. con.Open();
  363. var sql = $@"
  364. INSERT INTO " + App._dbName + "_at.[dbo].[di_policy_at]" +
  365. "([audit_Gubun], [audit_emp_cd], [audit_timestamp], [audit_remark], [tid]," +
  366. "[user_tid], [create_Date], [is_delete], [sys_plant_cd], [path]," +
  367. "[type], [custom_tag1], [custom_tag2], [custom_tag3], [custom_tag4]," +
  368. "[custom_tag5], [custom_tag6], [custom_tag7], [custom_tag8], [custom_tag9], [custom_tag10]" +
  369. ")" +
  370. "SELECT " +
  371. "@Type ,@audit_emp_cd, GETDATE(), @audit_Remark, [tid]," +
  372. "@usertid, [create_Date], [is_delete], [sys_plant_cd], [path]," +
  373. "[type], [custom_tag1], [custom_tag2], [custom_tag3], [custom_tag4]," +
  374. "[custom_tag5], [custom_tag6], [custom_tag7], [custom_tag8], [custom_tag9], [custom_tag10]" +
  375. "FROM [di_policy]" +
  376. "WHERE [user_tid] = @usertid and [path] = @audit_Remark and is_delete = 0";
  377. var data = new
  378. {
  379. Type = Gubun,
  380. audit_emp_cd = id,
  381. audit_Remark = remark,
  382. usertid = usertid
  383. };
  384. var sql1 = sql.Replace("chang_dbName", App._dbName + "_at.[dbo].[di_policy_at] ");
  385. return con.Query<User>(sql, data).SingleOrDefault();
  386. }
  387. }
  388. catch (Exception e)
  389. {
  390. log.Error(e);
  391. return null;
  392. }
  393. }
  394. public User Insert_deleteAT(string Gubun, string id, string remark, int tid, int usertid)
  395. {
  396. try
  397. {
  398. using (var con = new SqlConnection(App._myConnection))
  399. {
  400. con.Open();
  401. var sql = $@"
  402. INSERT INTO " + App._dbName + "_at.[dbo].[di_policy_at]" +
  403. "([audit_Gubun], [audit_emp_cd], [audit_timestamp], [audit_remark], [tid]," +
  404. "[user_tid], [create_Date], [is_delete], [sys_plant_cd], [path]," +
  405. "[type], [custom_tag1], [custom_tag2], [custom_tag3], [custom_tag4]," +
  406. "[custom_tag5], [custom_tag6], [custom_tag7], [custom_tag8], [custom_tag9], [custom_tag10]" +
  407. ")" +
  408. "SELECT " +
  409. "@Type ,@audit_emp_cd, GETDATE(), @audit_Remark, @tid," +
  410. "@usertid, [create_Date], [is_delete], [sys_plant_cd], [path]," +
  411. "[type], [custom_tag1], [custom_tag2], [custom_tag3], [custom_tag4]," +
  412. "[custom_tag5], [custom_tag6], [custom_tag7], [custom_tag8], [custom_tag9], [custom_tag10]" +
  413. "FROM [di_policy]" +
  414. "WHERE [tid] = @tid";
  415. var data = new
  416. {
  417. Type = Gubun,
  418. audit_emp_cd = id,
  419. audit_Remark = remark,
  420. tid = tid,
  421. usertid = usertid
  422. };
  423. var sql1 = sql.Replace("chang_dbName", App._dbName + "_at.[dbo].[di_policy_at] ");
  424. return con.Query<User>(sql, data).SingleOrDefault();
  425. }
  426. }
  427. catch (Exception e)
  428. {
  429. log.Error(e);
  430. return null;
  431. }
  432. }
  433. public User Insert_updateAT(string Gubun, string id, string remark,
  434. bool isStartup, bool isRetry, bool isLimit, bool isHash, string backupType, string userName,
  435. string tag1, string tag2, string tag3, string tag4, string tag5,
  436. string tag6, string tag7, string tag8, string tag9, string tag10)
  437. {
  438. try
  439. {
  440. var userTid = Application.Current.Properties["user_tid"];
  441. using (var con = new SqlConnection(App._myConnection))
  442. {
  443. con.Open();
  444. var sql = $@"
  445. INSERT INTO " + App._dbName + "_at.[dbo].[di_user_at]" +
  446. "([audit_Gubun], [audit_emp_cd], [audit_timestamp], [audit_remark], [tid]," +
  447. "[create_Date]," +
  448. "[is_startup], [is_retry], [is_limit], [is_hash], [name]," +
  449. "[backup_type], [sys_plant_cd], [id]," +
  450. "[tag1], [tag2], [tag3], [tag4], [tag5]," +
  451. "[tag6], [tag7], [tag8], [tag9], [tag10]" +
  452. ")" +
  453. "SELECT " +
  454. "@Type ,@audit_emp_cd, GETDATE(), @audit_Remark, [tid]," +
  455. "[create_Date]," +
  456. "@IsStartup, @IsRetry, @IsLimit, @IsHash, @UserName," +
  457. "@BackupType,[sys_plant_cd], [id]," +
  458. "@tag1, @tag2, @tag3, @tag4, @tag5," +
  459. "@tag6, @tag7, @tag8, @tag9, @tag10 " +
  460. "FROM [di_user] " +
  461. "WHERE [tid] = @UserTid";
  462. var data = new
  463. {
  464. Type = Gubun,
  465. audit_emp_cd = id,
  466. audit_Remark = remark,
  467. IsStartup = isStartup,
  468. IsRetry = isRetry,
  469. IsLimit = isLimit,
  470. IsHash = isHash,
  471. BackupType = backupType,
  472. UserTid = userTid,
  473. UserName = userName,
  474. Tag1 = tag1,
  475. Tag2 = tag2,
  476. Tag3 = tag3,
  477. Tag4 = tag4,
  478. Tag5 = tag5,
  479. Tag6 = tag6,
  480. Tag7 = tag7,
  481. Tag8 = tag8,
  482. Tag9 = tag9,
  483. Tag10 = tag10
  484. };
  485. //var sql1 = sql.Replace("chang_dbName", App._dbName + "_at.[dbo].[di_user_at] ");
  486. return con.Query<User>(sql, data).SingleOrDefault();
  487. }
  488. }
  489. catch (Exception e)
  490. {
  491. log.Error(e);
  492. return null;
  493. }
  494. }
  495. }
  496. }