颐和api

HyUserAccountController.cs 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Security.Claims;
  5. using System.Threading.Tasks;
  6. using MadRunFabric.Common;
  7. using MadRunFabric.Model;
  8. using Microsoft.AspNetCore.Authorization;
  9. using Microsoft.AspNetCore.Mvc;
  10. using Microsoft.Extensions.Configuration;
  11. using Microsoft.Extensions.Logging;
  12. using MongoDB.Driver;
  13. using SignTokenApi.IRepositories;
  14. using SignTokenApi.Model.Input;
  15. namespace SignTokenApi.Areas.Hy_User
  16. {
  17. [Authorize]
  18. [ApiVersion("6.0")]
  19. [Produces("application/json")]
  20. [Route("api/[controller]")]
  21. public class HyUserAccountController : BaseController
  22. {
  23. private readonly IConfiguration _configuration;
  24. private readonly ILogger<HyUserAccountController> _logger;
  25. private readonly ISys_User_AccountRepository _sys_user_accountRepository;
  26. public HyUserAccountController(IConfiguration configuration, ILogger<HyUserAccountController> logger, ISys_User_AccountRepository sys_user_accountRepository)
  27. {
  28. _configuration = configuration;
  29. _logger = logger;
  30. _sys_user_accountRepository = sys_user_accountRepository;
  31. }
  32. /// <summary>
  33. /// 用户信息列表 by page
  34. /// </summary>
  35. /// <param name="pageindex">当前页</param>
  36. /// <param name="pagesize">每页条数</param>
  37. /// <returns></returns>
  38. [HttpGet("getlistbypage")]
  39. public async Task<IActionResult> GetListByPageAsync(string keyword, string deptid, string roleid, string projectid, int type = -1, int pageindex = 1, int pagesize = 10)
  40. {
  41. #region 条件信息
  42. ////排序字段
  43. var sort = Builders<Sys_User_Account>.Sort.Descending("create_time");
  44. //根据条件查询集合
  45. var listFilter = new List<FilterDefinition<Sys_User_Account>>();
  46. listFilter.Add(Builders<Sys_User_Account>.Filter.Eq("delete_flag", false));
  47. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.type != 2));
  48. //查询
  49. if (type != -1)
  50. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.type.Equals(type)));
  51. if (!string.IsNullOrEmpty(deptid))
  52. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.dept_id.Equals(deptid)));
  53. if (!string.IsNullOrEmpty(roleid))
  54. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.role_id.Equals(roleid)));
  55. if (!string.IsNullOrEmpty(projectid))
  56. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.projectlist.Contains(projectid)));
  57. if (!string.IsNullOrEmpty(keyword))
  58. listFilter.Add(Builders<Sys_User_Account>.Filter.Where(s => s.usercode.Contains(keyword) || s.username.Contains(keyword) || s.mobile.Contains(keyword) || s.telephone.Contains(keyword)));
  59. #endregion
  60. var filter = Builders<Sys_User_Account>.Filter.And(listFilter);
  61. var list = await _sys_user_accountRepository.GetByPage(filter, pageindex, pagesize, sort);
  62. var redCount = await _sys_user_accountRepository.CountAsync(filter); //获取总数
  63. var obj = new
  64. {
  65. rows = list,
  66. total = redCount,
  67. };
  68. return Success("获取成功", obj);
  69. }
  70. /// <summary>
  71. /// 设备用户列表 by page - 关联查询
  72. /// </summary>
  73. /// <param name="pageindex">当前页</param>
  74. /// <param name="pagesize">每页条数</param>
  75. /// <returns></returns>
  76. [HttpGet("getlistsbypage")]
  77. public IActionResult GetListsByPage(string keyword, string deptid, string roleid, string projectid, int type = -1, int pageindex = 1, int pagesize = 10)
  78. {
  79. string allprojectrole = _configuration["allprojectrole"];
  80. int recordCount = 0;
  81. var result = _sys_user_accountRepository.HyGetListsByPage(keyword, deptid, roleid, projectid, type, allprojectrole, pageindex, pagesize, out recordCount);
  82. var obj = new
  83. {
  84. rows = result,
  85. total = recordCount,
  86. };
  87. return Success("获取成功", obj);
  88. }
  89. /// <summary>
  90. /// 获取用户列表 - 关联查询
  91. /// </summary>
  92. /// <returns></returns>
  93. [HttpGet("getapplists")]
  94. public IActionResult GetAppLists(string keyword, string deptid, string roleid, string projectid, int type = -1)
  95. {
  96. string allprojectrole = _configuration["allprojectrole"];
  97. var result = _sys_user_accountRepository.HyGetAppLists(keyword, deptid, roleid, projectid, type, allprojectrole);
  98. return Success("获取成功", result);
  99. }
  100. /// <summary>
  101. /// 获取用户详情 by id
  102. /// </summary>
  103. /// <param name="id">设备id</param>
  104. /// <returns></returns>
  105. [HttpGet("getdetailes")]
  106. public async Task<IActionResult> GetDetailsAsync(string id)
  107. {
  108. if (string.IsNullOrEmpty(id))
  109. return Error("参数错误");
  110. var model = await _sys_user_accountRepository.GetSingle(id);
  111. if (model != null)
  112. {
  113. return Success("获取成功!", model);
  114. }
  115. return Error("获取失败");
  116. }
  117. /// <summary>
  118. /// 获取用户详情 by id - 关联查询
  119. /// </summary>
  120. /// <param name="id"></param>
  121. /// <returns></returns>
  122. [HttpGet("getdetails")]
  123. public IActionResult GetDetails(string id)
  124. {
  125. if (string.IsNullOrEmpty(id))
  126. return Error("参数错误");
  127. var model = _sys_user_accountRepository.HyGetDetails(id);
  128. if (model != null)
  129. {
  130. return Success("获取成功!", model);
  131. }
  132. return Error("获取失败");
  133. }
  134. /// <summary>
  135. /// 添加用户信息
  136. /// </summary>
  137. /// <param name="input">用户信息参数</param>
  138. /// <returns></returns>
  139. [HttpPost("add")]
  140. public async Task<IActionResult> Add(UserAccountInput input)
  141. {
  142. #region 验证判断
  143. if (string.IsNullOrEmpty(input.usercode))
  144. return Error("账号不能为空");
  145. if (string.IsNullOrEmpty(input.password))
  146. return Error("密码不能为空");
  147. if (string.IsNullOrEmpty(input.mobile))
  148. return Error("手机号码不能为空");
  149. var modelold = new Sys_User_Account();
  150. modelold = await _sys_user_accountRepository.GetSingle(p => p.usercode == input.usercode && p.delete_flag == false);
  151. if (modelold != null)
  152. {
  153. return Error("账号已经存在");
  154. }
  155. #endregion
  156. var model = new Sys_User_Account();
  157. model.usercode = input.usercode;
  158. model.username = input.username;
  159. model.type = input.type;
  160. model.password = input.password;
  161. model.sex = input.sex;
  162. model.birthday = input.birthday;
  163. model.call_type = input.call_type;
  164. model.delete_flag = false;
  165. model.dept_id = input.dept_id;
  166. model.extensionnumber = input.extensionnumber;
  167. model.group = input.group;
  168. model.groupid = input.groupid;
  169. model.head_img = input.head_img;
  170. model.head_small_img = input.head_small_img;
  171. model.homephone = input.homephone;
  172. model.lock_flag = false;
  173. model.mail = input.mail;
  174. model.mobile = input.mobile;
  175. model.qq = input.qq;
  176. model.remark = input.remark;
  177. model.role_id = input.role_id;
  178. model.seat_flag = input.seat_flag;
  179. model.seat_level = input.seat_level;
  180. model.seat_right = input.seat_right;
  181. model.see_flag = input.see_flag;
  182. model.sina = input.sina;
  183. model.team_id = input.team_id;
  184. model.telephone = input.telephone;
  185. model.idcardno = input.idcardno;
  186. model.entrytime = input.entrytime;
  187. model.transfertime = input.transfertime;
  188. model.quittime = input.quittime;
  189. if (input.idcard != null)
  190. {
  191. model.idcard = input.idcard;
  192. }
  193. else
  194. {
  195. model.idcard = new List<FileBaseModel>();
  196. }
  197. if (input.certificate != null)
  198. {
  199. model.certificate = input.certificate;
  200. }
  201. else
  202. {
  203. model.certificate = new List<FileBaseModel>();
  204. }
  205. if (input.postlist != null)
  206. {
  207. model.postlist = input.postlist;
  208. }
  209. else
  210. {
  211. model.postlist = new List<string>();
  212. }
  213. if (input.projectlist != null)
  214. {
  215. model.projectlist = input.projectlist;
  216. }
  217. else
  218. {
  219. model.projectlist = new List<string>();
  220. }
  221. model.create_user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  222. bool b = await _sys_user_accountRepository.Add(model);
  223. if (b)
  224. return Success("添加成功");
  225. //日志
  226. _logger.LogError($"账号:{input.usercode}添加失败");
  227. return Error("添加失败");
  228. }
  229. /// <summary>
  230. /// 修改用户信息
  231. /// </summary>
  232. /// <param name="input"></param>
  233. /// <returns></returns>
  234. [HttpPost("update")]
  235. public async Task<IActionResult> Update(UserAccountInput input)
  236. {
  237. #region 验证判断
  238. if (string.IsNullOrEmpty(input.usercode))
  239. return Error("账号不能为空");
  240. //if (string.IsNullOrEmpty(input.password))
  241. // return Error("密码不能为空");
  242. var modelold = new Sys_User_Account();
  243. modelold = await _sys_user_accountRepository.GetSingle(p => p.usercode == input.usercode && p.id != input.id && p.delete_flag == false);
  244. if (modelold != null)
  245. {
  246. return Error("账号已经存在");
  247. }
  248. #endregion
  249. var model = new Sys_User_Account();
  250. model = await _sys_user_accountRepository.GetSingle(input.id);
  251. if (model == null)
  252. return Error("操作失败");
  253. model.usercode = input.usercode;
  254. model.username = input.username;
  255. model.type = input.type;
  256. //model.password = input.password;
  257. model.sex = input.sex;
  258. model.birthday = input.birthday;
  259. model.call_type = input.call_type;
  260. model.dept_id = input.dept_id;
  261. model.extensionnumber = input.extensionnumber;
  262. model.group = input.group;
  263. model.groupid = input.groupid;
  264. model.head_img = input.head_img;
  265. model.head_small_img = input.head_small_img;
  266. model.homephone = input.homephone;
  267. model.mail = input.mail;
  268. model.mobile = input.mobile;
  269. model.qq = input.qq;
  270. model.remark = input.remark;
  271. model.role_id = input.role_id;
  272. model.seat_flag = input.seat_flag;
  273. model.seat_level = input.seat_level;
  274. model.seat_right = input.seat_right;
  275. model.see_flag = input.see_flag;
  276. model.sina = input.sina;
  277. model.team_id = input.team_id;
  278. model.telephone = input.telephone;
  279. model.idcardno = input.idcardno;
  280. model.entrytime = input.entrytime;
  281. model.transfertime = input.transfertime;
  282. model.quittime = input.quittime;
  283. if (input.idcard != null)
  284. {
  285. model.idcard = input.idcard;
  286. }
  287. else
  288. {
  289. model.idcard = new List<FileBaseModel>();
  290. }
  291. if (input.certificate != null)
  292. {
  293. model.certificate = input.certificate;
  294. }
  295. else
  296. {
  297. model.certificate = new List<FileBaseModel>();
  298. }
  299. if (input.postlist != null)
  300. {
  301. model.postlist = input.postlist;
  302. }
  303. else
  304. {
  305. model.postlist = new List<string>();
  306. }
  307. if (input.projectlist != null)
  308. {
  309. model.projectlist = input.projectlist;
  310. }
  311. else
  312. {
  313. model.projectlist = new List<string>();
  314. }
  315. bool b = await _sys_user_accountRepository.UpdateOne(model);
  316. if (b)
  317. return Success("保存成功");
  318. //日志
  319. _logger.LogError($"账号:{input.usercode}修改失败");
  320. return Error("保存失败");
  321. }
  322. /// <summary>
  323. /// 逻辑删除用户
  324. /// </summary>
  325. /// <param name="ids"></param>
  326. /// <returns></returns>
  327. [HttpPost("delete")]
  328. public async Task<IActionResult> Delete(string[] ids)
  329. {
  330. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  331. //使用逻辑删除
  332. //物理删除的数据无法恢复
  333. if (ids != null && ids.Length > 0)
  334. {
  335. foreach (var item in ids)
  336. {
  337. var eq = await _sys_user_accountRepository.GetSingle(item);
  338. if (eq != null)
  339. {
  340. eq.delete_flag = true;
  341. eq.delete_user = usercode;
  342. eq.delete_time = DateTime.Now.ToLocalTime();
  343. bool bl = await _sys_user_accountRepository.UpdateOne(eq);
  344. //if (bl)
  345. //{
  346. // var data = await _sys_user_dataRepository.GetSingle(p => p.usercode == eq.usercode);
  347. // if (data != null)
  348. // {
  349. // await _sys_user_dataRepository.UpdateUserPost(data.usercode, "", usercode);
  350. // await _sys_user_dataRepository.UpdateUserProject(data.usercode, "", usercode);
  351. // data.isdelete = 1;
  352. // data.deleteby = usercode;
  353. // data.deletetime = DateTime.Now.ToLocalTime();
  354. // await _sys_user_dataRepository.Update(data);
  355. // }
  356. //}
  357. }
  358. }
  359. return Success("删除成功");
  360. }
  361. else
  362. return Error("请选择要删除的记录");
  363. }
  364. /// <summary>
  365. /// 修改用户密码
  366. /// </summary>
  367. /// <param name="input"></param>
  368. /// <returns></returns>
  369. [HttpPost("updatepassword")]
  370. public async Task<IActionResult> UpdatePassword(string usercode, string password, string surepassword)
  371. {
  372. #region 验证判断
  373. if (string.IsNullOrEmpty(usercode))
  374. return Error("请选择账号");
  375. if (string.IsNullOrEmpty(password))
  376. return Error("密码不能为空");
  377. if (string.IsNullOrEmpty(surepassword))
  378. return Error("确认密码不能为空");
  379. if (password != surepassword)
  380. return Error("两次输入的密码不一致");
  381. #endregion
  382. var model = await _sys_user_accountRepository.GetSingle(p => p.usercode == usercode);
  383. if (model == null)
  384. return Error("操作失败");
  385. model.password = password;
  386. bool b = await _sys_user_accountRepository.UpdateOne(model);
  387. if (b)
  388. return Success("保存成功");
  389. return Error("保存失败");
  390. }
  391. /// <summary>
  392. /// 修改我的密码
  393. /// </summary>
  394. /// <param name="input"></param>
  395. /// <returns></returns>
  396. [HttpPost("updatemypassword")]
  397. public async Task<IActionResult> UpdateMyPassword(string oldpassword, string password, string surepassword)
  398. {
  399. #region 验证判断
  400. if (string.IsNullOrEmpty(oldpassword))
  401. return Error("原始密码不能为空");
  402. if (string.IsNullOrEmpty(surepassword))
  403. return Error("确认密码不能为空");
  404. if (password != surepassword)
  405. return Error("两次输入的密码不一致");
  406. #endregion
  407. var usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  408. var model = await _sys_user_accountRepository.GetSingle(p => p.usercode == usercode && p.password == oldpassword);
  409. if (model == null)
  410. return Error("原始密码输入错误");
  411. model.password = password;
  412. bool b = await _sys_user_accountRepository.UpdateOne(model);
  413. if (b)
  414. return Success("更新成功");
  415. return Error("更新失败");
  416. }
  417. /// <summary>
  418. /// 获取当前用户信息
  419. /// </summary>
  420. /// <returns></returns>
  421. [HttpGet("getnowuser")]
  422. public IActionResult GetUserInfo()
  423. {
  424. string allprojectrole = _configuration["allprojectrole"];
  425. string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  426. var model = _sys_user_accountRepository.HyGetUserInfo(nowusercode, allprojectrole);
  427. if (model != null)
  428. {
  429. return Success("获取成功!", model);
  430. }
  431. return NoToken("获取失败");
  432. }
  433. /// <summary>
  434. /// 获取用户详情 by id - 关联查询
  435. /// </summary>
  436. /// <param name="id"></param>
  437. /// <returns></returns>
  438. [AllowAnonymous]
  439. [HttpGet("getuserinfo")]
  440. public IActionResult GetUserInfo(string usercode)
  441. {
  442. string allprojectrole = _configuration["allprojectrole"];
  443. var model = _sys_user_accountRepository.HyGetUserInfo(usercode, allprojectrole);
  444. if (model != null)
  445. {
  446. return Success("获取成功!", model);
  447. }
  448. return Error("获取失败");
  449. }
  450. //2018-7-21获取坐席实时状态使用
  451. [HttpGet("getlist")]
  452. public async Task<IActionResult> GetListsAsync(string groupid, string agentid)
  453. {
  454. //根据条件查询集合
  455. var list = new List<FilterDefinition<Sys_User_Account>>();
  456. list.Add(Builders<Sys_User_Account>.Filter.Eq("seat_flag", true));
  457. list.Add(Builders<Sys_User_Account>.Filter.Eq("delete_flag", false));
  458. if (groupid != null)
  459. list.Add(Builders<Sys_User_Account>.Filter.Where(s => s.group.Contains(groupid)));
  460. if (agentid != null)
  461. list.Add(Builders<Sys_User_Account>.Filter.Where(s => s.usercode.Contains(agentid)));
  462. var filter = Builders<Sys_User_Account>.Filter.And(list);
  463. var agentlist = await _sys_user_accountRepository.Get(filter, null, null);
  464. #region
  465. System.Data.DataTable dt = new System.Data.DataTable();
  466. dt.Columns.Add("groupid");
  467. dt.Columns.Add("agentid");
  468. //dt.Columns.Add("group");
  469. foreach (Object obj in agentlist)
  470. {
  471. if (obj is Sys_User_Account)//这个是类型的判断,类或结构
  472. {
  473. Sys_User_Account s = (Sys_User_Account)obj;
  474. System.Data.DataRow dr = dt.NewRow();
  475. dr["groupid"] = s.groupid;
  476. dr["agentid"] = s.usercode;
  477. //dr["group"] = s.group;
  478. dt.Rows.Add(dr);
  479. }
  480. }
  481. //var dtlist = new
  482. //{
  483. // rows=dt
  484. //};
  485. #endregion
  486. return Success("根据条件获取坐席id数据成功", dt);
  487. }
  488. /// <summary>
  489. /// 获取某项目某角色人员
  490. /// </summary>
  491. /// <returns></returns>
  492. [HttpGet("getprojectuser")]
  493. public IActionResult GetProjectUser(string projectid, string rolecode = "YWYG")
  494. {
  495. var result = _sys_user_accountRepository.HyGetProjectUser(projectid, rolecode);
  496. return Success("获取成功", result);
  497. }
  498. /// <summary>
  499. /// 获取坐席列表
  500. /// </summary>
  501. /// <param name="key"></param>
  502. /// <returns></returns>
  503. [HttpGet("getseatlist")]
  504. public async Task<IActionResult> GetSeatListsAsync(string key)
  505. {
  506. //根据条件查询集合
  507. var list = new List<FilterDefinition<Sys_User_Account>>();
  508. list.Add(Builders<Sys_User_Account>.Filter.Eq("seat_flag", true));
  509. list.Add(Builders<Sys_User_Account>.Filter.Eq("delete_flag", false));
  510. if (!string.IsNullOrEmpty(key))
  511. list.Add(Builders<Sys_User_Account>.Filter.Where(s => s.usercode.Contains(key) || s.username.Contains(key)));
  512. var filter = Builders<Sys_User_Account>.Filter.And(list);
  513. var agentlist = await _sys_user_accountRepository.Get(filter, null, null);
  514. return Success("根据条件获取坐席数据成功", agentlist);
  515. }
  516. }
  517. }