足力健后端,使用.netcore版本,合并1个项目使用

UserAccountController.cs 35KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IRepositories;
  4. using System.Linq;
  5. using System.Security.Claims;
  6. using System.Threading.Tasks;
  7. using System.Common;
  8. using Microsoft.AspNetCore.Authorization;
  9. using Microsoft.AspNetCore.Mvc;
  10. using SqlSugar;
  11. using System.Model;
  12. using TVShoppingCallCenter_ZLJ.Models.Inputs;
  13. using Microsoft.Extensions.Configuration;
  14. using System.Common.Helpers;
  15. using System.Data;
  16. using System.Utility.Encrypt;
  17. namespace TVShoppingCallCenter_ZLJ.Controllers
  18. {
  19. [Authorize]
  20. [Produces("application/json")]
  21. [Route("api/[controller]")]
  22. public class UserAccountController : BaseController
  23. {
  24. private readonly ISys_UserAccountRepository _sys_useraccountRepository;
  25. private readonly ISys_RoleInfoRepository _sys_role_infoRepository;
  26. private readonly IConfiguration _configuration;
  27. private readonly ISys_DepartmentRepository _sys_departmentRepository;
  28. private readonly ISys_SeatGroupRepository _sys_seatgroupRepository;
  29. private readonly ISys_DeptTeamRepository _sys_deptteamRepository;
  30. public UserAccountController(IConfiguration configuration, ISys_UserAccountRepository sys_useraccountRepository, ISys_RoleInfoRepository sys_role_infoRepository,
  31. ISys_DepartmentRepository sys_departmentRepository, ISys_SeatGroupRepository sys_seatgroupRepository
  32. , ISys_DeptTeamRepository sys_deptteamRepository)
  33. {
  34. _configuration = configuration;
  35. _sys_useraccountRepository = sys_useraccountRepository;
  36. _sys_role_infoRepository = sys_role_infoRepository;
  37. _sys_departmentRepository = sys_departmentRepository;
  38. _sys_seatgroupRepository = sys_seatgroupRepository;
  39. _sys_deptteamRepository = sys_deptteamRepository;
  40. }
  41. /// <summary>
  42. /// 用户信息列表 by page
  43. /// </summary>
  44. /// <param name="pageindex">当前页</param>
  45. /// <param name="pagesize">每页条数</param>
  46. /// <returns></returns>
  47. [HttpGet("getlistbypage")]
  48. public async Task<IActionResult> GetListByPageAsync(string keyword, string deptid, string roleid,int teamId = 0,int groupid=0, int pageindex = 1, int pagesize = 20)
  49. {
  50. List<IConditionalModel> conModels = new List<IConditionalModel>();
  51. #region 筛选
  52. conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.NoEqual , FieldValue = ((int)EnumUserCountState.Delete ).ToString() });
  53. if (!string.IsNullOrEmpty(deptid))
  54. conModels.Add(new ConditionalModel() { FieldName = "F_DeptId", ConditionalType = ConditionalType.Equal, FieldValue = deptid });
  55. if (!string.IsNullOrEmpty(roleid))
  56. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = roleid });
  57. if (groupid > 0)
  58. conModels.Add(new ConditionalModel() { FieldName = "F_GroupId", ConditionalType = ConditionalType.Equal, FieldValue = groupid.ToString () });
  59. if (teamId > 0)
  60. conModels.Add(new ConditionalModel() { FieldName = "F_DeptTeamId", ConditionalType = ConditionalType.Equal, FieldValue = teamId.ToString() });
  61. if (!string.IsNullOrEmpty(keyword))
  62. conModels.Add(new ConditionalCollections()
  63. {
  64. ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
  65. {
  66. new KeyValuePair<WhereType, ConditionalModel>(WhereType.And, new ConditionalModel() { FieldName = "F_UserCode", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  67. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or , new ConditionalModel() { FieldName = "F_UserName", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  68. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Mobile", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  69. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Telephone", ConditionalType = ConditionalType.Like, FieldValue = keyword })
  70. }
  71. });
  72. #endregion
  73. int recordCount = 0;
  74. var list = await _sys_useraccountRepository.GetListViewByPage(conModels, new MyPageModel() { PageIndex = pageindex, PageSize = pagesize, PageCount = recordCount }, "F_CreateOn desc");
  75. return Success("获取成功", list);
  76. }
  77. [HttpGet("getlistdrop")]
  78. public async Task<IActionResult> GetListDropAsync(string deptid, string roleid, string rolecode)
  79. {
  80. List<IConditionalModel> conModels = new List<IConditionalModel>();
  81. #region 筛选
  82. conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumUserCountState.Enabled).ToString() });
  83. if (!string.IsNullOrEmpty(deptid))
  84. conModels.Add(new ConditionalModel() { FieldName = "F_DeptId", ConditionalType = ConditionalType.Equal, FieldValue = deptid });
  85. if (!string.IsNullOrEmpty(roleid))
  86. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = roleid });
  87. if (!string.IsNullOrEmpty(rolecode))
  88. {
  89. var rolemodel = await _sys_role_infoRepository.GetSingle(x => x.F_RoleCode == rolecode && x.F_State == (int)EnumDelState.Enabled);
  90. if (rolemodel != null)
  91. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = rolemodel.F_RoleId.ToString() });
  92. else
  93. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = "-1" });
  94. }
  95. #endregion
  96. var list = await _sys_useraccountRepository.GetListALL(conModels, "F_CreateOn desc");
  97. var result = list.Select(x => new
  98. {
  99. x.F_UserCode,
  100. x.F_UserName,
  101. x.F_DeptId,
  102. x.F_RoleId,
  103. x.F_UserId
  104. });
  105. return Success("获取成功", result);
  106. }
  107. /// <summary>
  108. /// 获取用户详情 by id
  109. /// </summary>
  110. /// <param name="id">设备id</param>
  111. /// <returns></returns>
  112. [HttpGet("getdetails")]
  113. public async Task<IActionResult> GetDetailsAsync(int id)
  114. {
  115. if (id <= 0)
  116. return Error("参数错误");
  117. var model = await _sys_useraccountRepository.GetSingle(x => x.F_UserId == id && x.F_DeleteFlag != (int)EnumUserCountState.Delete );
  118. if (model != null)
  119. {
  120. return Success("获取成功!", GetDeptName(model));
  121. }
  122. return Error("获取失败");
  123. }
  124. private T_Sys_UserAccount GetDeptName(T_Sys_UserAccount model)
  125. {
  126. if (model.F_DeptId>0)
  127. {
  128. var dept = _sys_departmentRepository.GetSingle(x => x.F_DeptId == model.F_DeptId ).Result;
  129. if (model != null)
  130. model.F_Dept = dept.F_DeptName;
  131. }
  132. return model;
  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. if (await _sys_useraccountRepository.GetCount(p => p.F_UserCode == input.usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  150. {
  151. return Error("账号已经存在");
  152. }
  153. if (await _sys_useraccountRepository.GetCount(p =>( p.F_Mobile == input.mobile||p.F_Telephone== input.mobile) && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  154. {
  155. return Error("手机号已经存在");
  156. }
  157. var rolemodel = await _sys_role_infoRepository.GetSingle(x => x.F_RoleId == input.roleid);
  158. if (rolemodel!=null )
  159. {
  160. if (input.deptid<=0)
  161. {
  162. if ( rolemodel.F_RoleCode == "ZXFZR" || rolemodel.F_RoleCode == "XZFZR")
  163. {
  164. return Error("请选择部门");
  165. }
  166. }
  167. if (input.deptteamid <= 0)
  168. {
  169. if ( rolemodel.F_RoleCode == "ZXFZR" || rolemodel.F_RoleCode == "XZFZR")
  170. {
  171. return Error("请选择中心");
  172. }
  173. }
  174. if (input.groupid <= 0)
  175. {
  176. if ( rolemodel.F_RoleCode == "XZFZR")
  177. {
  178. return Error("请选择小组");
  179. }
  180. }
  181. }
  182. #endregion
  183. var model = new T_Sys_UserAccount();
  184. model.F_UserCode = input.usercode;
  185. model.F_UserName = input.username;
  186. model.F_Password = input.password;
  187. model.F_SexFlag = input.sexflag;
  188. model.F_DeptId = input.deptid;
  189. model.F_ExtensionNumber = input.extensionnumber;
  190. model.F_RoleId = input.roleid;
  191. model.F_SeartGroupID = input.seartgroupiD;
  192. model.F_SeatFlag = input.seatflag;
  193. model.F_SeatLevel = input.seatlevel;
  194. model.F_SeatRight = input.seatright;
  195. model.F_RemindFlag = input.remindflag;
  196. model.F_Remark = input.remark;
  197. model.F_HeadImg = input.headimg;
  198. model.F_WXNo = input.wxno;
  199. model.F_Telephone = input.telephone;
  200. model.F_Mobile = input.mobile;
  201. model.F_HomePhone = input.remark;
  202. model.F_WxOpenId = "";
  203. model .F_GroupId= input.groupid;
  204. model.F_Group = input.group;
  205. model.F_DutyId = input.dutyid;
  206. model.F_DeptTeamId = input.deptteamid;
  207. model.F_Team = input.deptteam;
  208. model.F_Dept = input.dept;
  209. model.F_EntryDate = input.entrydate;
  210. model.F_FullDate = input.fulldate;
  211. model.F_TermDate = input.termdate;
  212. model.F_DeleteFlag = (int)EnumUserCountState.Enabled;
  213. model.F_CreateBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  214. model.F_CreateOn = DateTime.Now;
  215. var b = await _sys_useraccountRepository.Add(model);
  216. if (b > 0)
  217. return Success("添加成功");
  218. else
  219. return Error("添加失败");
  220. }
  221. /// <summary>
  222. /// 上传文件并导入数据库
  223. /// </summary>
  224. /// <returns></returns>
  225. [HttpPost("importexcel")]
  226. public async Task<IActionResult> ImportExcel(int headrow = 0)
  227. {
  228. Microsoft.AspNetCore.Http.IFormFile _upfile = Request.Form.Files[0];
  229. if (!_upfile.ContentType.Equals("application/vnd.ms-excel") && !_upfile.ContentType.Equals("application/x-xls") && !_upfile.ContentType.Equals("application/x-xlsx") && !_upfile.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && !_upfile.ContentType.Equals("application/octet-stream"))
  230. return Error($"请正确上传Excel文件:file.ContentType={_upfile.ContentType}");
  231. NPOIHelper npoi = new NPOIHelper();
  232. var dtExcel = npoi.ExcelToTable1(_upfile, headrow);
  233. int num = dtExcel.Rows.Count;
  234. var cols = dtExcel.Columns;
  235. int colnum = cols.Count;
  236. string errmsg = string.Empty;
  237. string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  238. List<T_Cus_VipInfo> modelLIst = new List<T_Cus_VipInfo>();
  239. if (num > 0)
  240. {
  241. int index = 1;
  242. foreach (DataRow dr in dtExcel.Rows)
  243. {
  244. index++;
  245. var model = new T_Sys_UserAccount();
  246. if (dr.Table.Columns.Contains("工号"))
  247. {
  248. if (!string.IsNullOrEmpty(dr["工号"].ToString()))
  249. {
  250. if (await _sys_useraccountRepository.GetCount(p => p.F_UserCode == (dr["工号"].ToString().Trim ()) && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  251. {
  252. errmsg = errmsg + "\r\n第" + index + "行导入失败!工号已经存在";
  253. continue;
  254. }
  255. model.F_UserCode = dr["工号"].ToString();
  256. }
  257. else
  258. {
  259. errmsg = errmsg + "\r\n第" + index + "行导入失败!工号不能为空";
  260. continue;
  261. }
  262. }
  263. else
  264. {
  265. return Error("模板错误,缺少工号");
  266. }
  267. if (dr.Table.Columns.Contains("姓名"))
  268. {
  269. if (!string.IsNullOrEmpty(dr["姓名"].ToString()))
  270. {
  271. model.F_UserName = dr["姓名"].ToString();
  272. }
  273. else
  274. {
  275. errmsg = errmsg + "\r\n第" + index + "行导入失败!姓名不能为空";
  276. continue;
  277. }
  278. }
  279. else
  280. {
  281. return Error("模板错误,缺少姓名");
  282. }
  283. if (dr.Table.Columns.Contains("密码"))
  284. {
  285. if (!string.IsNullOrEmpty(dr["密码"].ToString()))
  286. {
  287. model.F_Password = EncryptHelper.Md5(dr["密码"].ToString());
  288. }
  289. else
  290. {
  291. errmsg = errmsg + "\r\n第" + index + "行导入失败!密码不能为空";
  292. continue;
  293. }
  294. }
  295. else
  296. {
  297. return Error("模板错误,缺少密码");
  298. }
  299. if (dr.Table.Columns.Contains("部门"))
  300. {
  301. if (!string.IsNullOrEmpty(dr["部门"].ToString()))
  302. {
  303. var dept = _sys_departmentRepository.GetListALL(x => x.F_DeptName == dr["部门"].ToString().Trim()
  304. && x.F_State == (int)EnumDelState.Enabled).Result ;
  305. if (dept!=null&& dept.Count >0)
  306. {
  307. model.F_DeptId = dept[0].F_DeptId ;
  308. model.F_Dept = dept[0].F_DeptName ;
  309. }
  310. else
  311. {
  312. errmsg = errmsg + "\r\n第" + index + "行导入失败!该部门不存在";
  313. continue;
  314. }
  315. }
  316. else
  317. {
  318. errmsg = errmsg + "\r\n第" + index + "行导入失败!部门不能为空";
  319. continue;
  320. }
  321. }
  322. else
  323. {
  324. return Error("模板错误,缺少部门");
  325. }
  326. string rolecode = "";
  327. if (dr.Table.Columns.Contains("角色"))
  328. {
  329. if (!string.IsNullOrEmpty(dr["角色"].ToString()))
  330. {
  331. var rolemodel = await _sys_role_infoRepository.GetListALL (x => x.F_RoleName == dr["角色"].ToString().Trim ()&&x.F_State == (int)EnumDelState.Enabled);
  332. if (rolemodel != null && rolemodel.Count > 0)
  333. {
  334. model.F_RoleId = rolemodel[0].F_RoleId ;
  335. rolecode = rolemodel[0].F_RoleCode ;
  336. }
  337. else
  338. {
  339. errmsg = errmsg + "\r\n第" + index + "行导入失败!该角色不存在";
  340. continue;
  341. }
  342. }
  343. else
  344. {
  345. errmsg = errmsg + "\r\n第" + index + "行导入失败!角色不能为空";
  346. continue;
  347. }
  348. }
  349. else
  350. {
  351. return Error("模板错误,缺少角色");
  352. }
  353. model.F_SeatFlag = false;
  354. if (dr.Table.Columns.Contains("坐席组"))
  355. {
  356. if (!string.IsNullOrEmpty(dr["坐席组"].ToString()))
  357. {
  358. var seat = await _sys_seatgroupRepository.GetListALL(x => x.F_ZXZName == dr["坐席组"].ToString().Trim() && x.F_State == (int)EnumDelState.Enabled);
  359. if (seat != null && seat.Count > 0)
  360. {
  361. model.F_SeartGroupID = seat[0].F_ZXZID ;
  362. model.F_SeatFlag =true ;
  363. model.F_SeatRight = "0";
  364. }
  365. else
  366. {
  367. errmsg = errmsg + "\r\n第" + index + "行导入失败!该坐席组不存在";
  368. continue;
  369. }
  370. }
  371. }
  372. else
  373. {
  374. return Error("模板错误,缺少坐席组");
  375. }
  376. if (dr.Table.Columns.Contains("中心"))
  377. {
  378. if (!string.IsNullOrEmpty(dr["中心"].ToString()))
  379. {
  380. var team = _sys_deptteamRepository.GetListALL(x => x.F_Name == dr["中心"].ToString().Trim() && x.F_State == (int)EnumDelState.Enabled
  381. &&x .F_DeptId == model.F_DeptId).Result ;
  382. if (team != null && team.Count > 0)
  383. {
  384. model.F_DeptTeamId = team[0].F_Id ;
  385. model.F_Team = team[0].F_Name;
  386. }
  387. else
  388. {
  389. errmsg = errmsg + "\r\n第" + index + "行导入失败!该中心不存在";
  390. continue;
  391. }
  392. }
  393. }
  394. else
  395. {
  396. return Error("模板错误,缺少中心");
  397. }
  398. if (dr.Table.Columns.Contains("小组"))
  399. {
  400. if (!string.IsNullOrEmpty(dr["小组"].ToString()))
  401. {
  402. var team = _sys_deptteamRepository.GetListALL(x => x.F_Name == dr["小组"].ToString().Trim() && x.F_State == (int)EnumDelState.Enabled
  403. &&x .F_ParentID == model.F_DeptTeamId).Result ;
  404. if (team != null && team.Count > 0)
  405. {
  406. model.F_GroupId = team[0].F_Id;
  407. model.F_Group = team[0].F_Name;
  408. }
  409. else
  410. {
  411. errmsg = errmsg + "\r\n第" + index + "行导入失败!该小组不存在";
  412. continue;
  413. }
  414. }
  415. }
  416. else
  417. {
  418. return Error("模板错误,缺少小组");
  419. }
  420. if (model.F_DeptId <= 0)
  421. {
  422. if (rolecode == "ZXFZR" || rolecode == "XZFZR")
  423. {
  424. return Error("请选择部门");
  425. }
  426. }
  427. if (model.F_DeptTeamId <= 0)
  428. {
  429. if (rolecode == "ZXFZR" || rolecode == "XZFZR")
  430. {
  431. return Error("请选择中心");
  432. }
  433. }
  434. if (model.F_GroupId <= 0)
  435. {
  436. if (rolecode == "XZFZR")
  437. {
  438. return Error("请选择小组");
  439. }
  440. }
  441. model.F_DeleteFlag = (int)EnumUserCountState.Enabled;
  442. model.F_CreateBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  443. model.F_CreateOn = DateTime.Now;
  444. if (await _sys_useraccountRepository.Add(model) <= 0)
  445. {
  446. errmsg = errmsg + "\r\n第" + index + "行导入失败!";
  447. continue;
  448. }
  449. }
  450. }
  451. else
  452. {
  453. return Error("文件中无数据");
  454. }
  455. if (!string.IsNullOrEmpty(errmsg))
  456. {
  457. return Error(errmsg);
  458. }
  459. return Success("导入成功");
  460. }
  461. /// <summary>
  462. /// 修改用户信息
  463. /// </summary>
  464. /// <param name="input"></param>
  465. /// <returns></returns>
  466. [HttpPost("update")]
  467. public async Task<IActionResult> Update(UserAccountInput input)
  468. {
  469. #region 验证判断
  470. if (string.IsNullOrEmpty(input.usercode))
  471. return Error("账号不能为空");
  472. if (await _sys_useraccountRepository.GetCount(p => p.F_UserCode == input.usercode && p.F_UserId != input.userid && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  473. {
  474. return Error("账号已经存在");
  475. }
  476. #endregion
  477. if (await _sys_useraccountRepository.GetCount(p =>p.F_UserId!= input.userid && (p.F_Mobile == input.mobile || p.F_Telephone == input.mobile) && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  478. {
  479. return Error("手机号已经存在");
  480. }
  481. var model = new T_Sys_UserAccount();
  482. model = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == input.userid && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  483. if (model == null)
  484. return Error("获取信息失败");
  485. model.F_UserCode = input.usercode;
  486. model.F_UserName = input.username;
  487. model.F_SexFlag = input.sexflag;
  488. model.F_DeptId = input.deptid;
  489. model.F_ExtensionNumber = input.extensionnumber;
  490. model.F_RoleId = input.roleid;
  491. model.F_SeartGroupID = input.seartgroupiD;
  492. model.F_SeatFlag = input.seatflag;
  493. model.F_SeatLevel = input.seatlevel;
  494. model.F_SeatRight = input.seatright;
  495. model.F_RemindFlag = input.remindflag;
  496. model.F_Remark = input.remark;
  497. model.F_HeadImg = input.headimg;
  498. model.F_WXNo = input.wxno;
  499. model.F_Telephone = input.telephone;
  500. model.F_Mobile = input.mobile;
  501. model.F_HomePhone = input.homephone;
  502. model.F_GroupId = input.groupid;
  503. model.F_Group = input.group;
  504. model.F_DutyId = input.dutyid;
  505. model.F_DeptTeamId = input.deptteamid;
  506. model.F_EntryDate = input.entrydate;
  507. model.F_FullDate = input.fulldate;
  508. model.F_TermDate = input.termdate;
  509. model.F_Team = input.deptteam;
  510. model.F_Dept = input.dept;
  511. model.F_LastModifyBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  512. model.F_LastModifyOn = DateTime.Now;
  513. bool b = await _sys_useraccountRepository.Update(model);
  514. if (b)
  515. return Success("保存成功");
  516. else
  517. return Error("保存失败");
  518. }
  519. /// <summary>
  520. /// 逻辑删除用户
  521. /// </summary>
  522. /// <param name="ids"></param>
  523. /// <returns></returns>
  524. [HttpPost("delete")]
  525. public async Task<IActionResult> Delete(int[] ids,int state=1)
  526. {
  527. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  528. //使用逻辑删除
  529. //物理删除的数据无法恢复
  530. if (ids != null && ids.Length > 0)
  531. {
  532. foreach (var item in ids)
  533. {
  534. var eq = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == item);
  535. if (eq != null)
  536. {
  537. eq.F_DeleteFlag = state;
  538. eq.F_DeleteBy = usercode;
  539. eq.F_DeleteOn = DateTime.Now.ToLocalTime();
  540. bool bl = await _sys_useraccountRepository.Update(eq);
  541. }
  542. }
  543. return Success("删除成功");
  544. }
  545. else
  546. return Error("请选择要删除的记录");
  547. }
  548. /// <summary>
  549. /// 获取当前用户信息
  550. /// </summary>
  551. /// <returns></returns>
  552. [HttpGet("getnowuser")]
  553. public async Task<IActionResult> GetNowUser()
  554. {
  555. string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  556. var userModel = await _sys_useraccountRepository.GetSingle(u => u.F_UserCode == nowusercode && u.F_DeleteFlag != (int)EnumUserCountState.Delete );
  557. if (userModel == null)
  558. return Error("获取失败");
  559. if (!string .IsNullOrEmpty (userModel.F_HeadImg))
  560. userModel.F_HeadImg = _configuration["appSettings:ApiHost"].ToString() + userModel.F_HeadImg;
  561. return Success("获取成功", userModel);
  562. }
  563. /// <summary>
  564. /// 修改用户密码
  565. /// </summary>
  566. /// <param name="input"></param>
  567. /// <returns></returns>
  568. [HttpPost("updatepassword")]
  569. public async Task<IActionResult> UpdatePassword(string usercode, string password, string surepassword)
  570. {
  571. #region 验证判断
  572. if (string.IsNullOrEmpty(usercode))
  573. return Error("请选择账号");
  574. if (string.IsNullOrEmpty(password))
  575. return Error("密码不能为空");
  576. if (string.IsNullOrEmpty(surepassword))
  577. return Error("确认密码不能为空");
  578. if (password != surepassword)
  579. return Error("两次输入的密码不一致");
  580. #endregion
  581. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  582. if (model == null)
  583. return Error("操作失败");
  584. model.F_Password = password;
  585. bool b = await _sys_useraccountRepository.Update(model);
  586. if (b)
  587. return Success("保存成功");
  588. return Error("保存失败");
  589. }
  590. /// <summary>
  591. /// 更新头像
  592. /// </summary>
  593. /// <param name="input"></param>
  594. /// <returns></returns>
  595. [HttpPost("updateavatar")]
  596. public async Task<IActionResult> UpdateAvatar(string usercode, string headimg)
  597. {
  598. #region 验证判断
  599. if (string.IsNullOrEmpty(usercode))
  600. return Error("请选择账号");
  601. if (string.IsNullOrEmpty(headimg))
  602. return Error("头像不能为空");
  603. #endregion
  604. T_Sys_UserAccount model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  605. if (model == null)
  606. return Error("操作失败");
  607. model.F_HeadImg = headimg;
  608. List<T_Sys_UserAccount> list = new List<T_Sys_UserAccount>();
  609. list.Add(model);
  610. bool b = await _sys_useraccountRepository.UpdateListToColumns(list, s => new { s.F_HeadImg });
  611. if (b)
  612. return Success("保存成功");
  613. return Error("保存失败");
  614. }
  615. /// <summary>
  616. /// 修改我的密码
  617. /// </summary>
  618. /// <param name="input"></param>
  619. /// <returns></returns>
  620. [HttpPost("updatemypassword")]
  621. public async Task<IActionResult> UpdateMyPassword(string oldpassword, string password, string surepassword)
  622. {
  623. #region 验证判断
  624. if (string.IsNullOrEmpty(oldpassword))
  625. return Error("原密码不能为空");
  626. if (string.IsNullOrEmpty(surepassword))
  627. return Error("确认密码不能为空");
  628. if (password != surepassword)
  629. return Error("两次输入的密码不一致");
  630. #endregion
  631. var usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  632. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_Password == oldpassword && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  633. if (model == null)
  634. return Error("原密码输入错误");
  635. model.F_Password = password;
  636. bool b = await _sys_useraccountRepository.Update(model);
  637. if (b)
  638. return Success("更新成功");
  639. return Error("更新失败");
  640. }
  641. [HttpGet("getseatlist")]
  642. public async Task<IActionResult> GetSeatList(string usercode, string rolecode, string deptid = "")
  643. {
  644. List<IConditionalModel> conModels = new List<IConditionalModel>();
  645. if (!string.IsNullOrEmpty(rolecode))
  646. {
  647. T_Sys_RoleInfo rolemodelList = await _sys_role_infoRepository.GetFirst(x => x.F_RoleCode == rolecode && x.F_State == (int)EnumDelState.Enabled);
  648. conModels.Add(new ConditionalModel() { FieldName = "F_SeatFlag", ConditionalType = ConditionalType.Equal, FieldValue = "1" });
  649. }
  650. if ( UserLogin.RoleCode == "XZFZR")
  651. {
  652. // var xsroleid = await _sys_role_infoRepository.GetListALL(x => x.F_RoleCode == "XS" && x.F_State == 1);
  653. var useraccount = await _sys_useraccountRepository.GetSingle(x => x.F_UserId == UserLogin.UserId.ObjToInt() && x.F_DeleteFlag == 0);
  654. var userList = await _sys_useraccountRepository.GetListALL(x => x.F_GroupId == useraccount.F_GroupId && x.F_DeleteFlag == 0 );
  655. string Saleperson = "";
  656. if (useraccount != null && userList.Count > 0)
  657. {
  658. foreach (var it in userList)
  659. {
  660. Saleperson += "," + it.F_UserId ;
  661. }
  662. Saleperson = Saleperson.TrimStart(',');
  663. conModels.Add(new ConditionalModel() { FieldName = "F_UserId", ConditionalType = ConditionalType.In, FieldValue = Saleperson });
  664. }
  665. else
  666. conModels.Add(new ConditionalModel() { FieldName = "F_UserId", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  667. }
  668. else if (UserLogin.RoleCode == "ZXFZR")
  669. {
  670. var useraccount = await _sys_useraccountRepository.GetSingle(x => x.F_UserId == UserLogin.UserId.ObjToInt() && x.F_DeleteFlag == 0);
  671. var userList = await _sys_useraccountRepository.GetListALL(x => x.F_DeptTeamId == useraccount.F_DeptTeamId && x.F_DeleteFlag == 0);
  672. string Saleperson = "";
  673. if (useraccount != null && userList.Count > 0)
  674. {
  675. foreach (var it in userList)
  676. {
  677. Saleperson += "," + it.F_UserId;
  678. }
  679. Saleperson = Saleperson.TrimStart(',');
  680. conModels.Add(new ConditionalModel() { FieldName = "F_UserId", ConditionalType = ConditionalType.In, FieldValue = Saleperson });
  681. }
  682. else
  683. conModels.Add(new ConditionalModel() { FieldName = "F_UserId", ConditionalType = ConditionalType.Equal, FieldValue = UserLogin.UserId });
  684. }
  685. #region 筛选
  686. conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumUserCountState.Enabled).ToString() });
  687. conModels.Add(new ConditionalModel() { FieldName = "F_SeatFlag", ConditionalType = ConditionalType.Equal, FieldValue = "1" });
  688. if (!string.IsNullOrEmpty(deptid))
  689. conModels.Add(new ConditionalModel() { FieldName = "F_DeptId", ConditionalType = ConditionalType.Equal, FieldValue = deptid });
  690. if (!string.IsNullOrEmpty(usercode))
  691. conModels.Add(new ConditionalModel() { FieldName = "F_UserCode", ConditionalType = ConditionalType.Equal, FieldValue = usercode });
  692. #endregion
  693. var list = await _sys_useraccountRepository.GetListALL(conModels, "F_CreateOn desc");
  694. var result = list.Select(x => new
  695. {
  696. x.F_UserCode,
  697. x.F_UserName,
  698. x.F_DeptId,
  699. x.F_RoleId,
  700. x.F_UserId,
  701. x.F_SeatRight,
  702. x.F_SeartGroupID,
  703. x.F_ExtensionNumber
  704. });
  705. return Success("获取成功", result);
  706. }
  707. }
  708. }