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

UserAccountController.cs 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  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. namespace TVShoppingCallCenter_ZLJ.Controllers
  14. {
  15. [Authorize]
  16. [Produces("application/json")]
  17. [Route("api/[controller]")]
  18. public class UserAccountController : BaseController
  19. {
  20. private readonly ISys_UserAccountRepository _sys_useraccountRepository;
  21. private readonly ISys_RoleInfoRepository _sys_role_infoRepository;
  22. public UserAccountController(ISys_UserAccountRepository sys_useraccountRepository, ISys_RoleInfoRepository sys_role_infoRepository)
  23. {
  24. _sys_useraccountRepository = sys_useraccountRepository;
  25. _sys_role_infoRepository = sys_role_infoRepository;
  26. }
  27. /// <summary>
  28. /// 用户信息列表 by page
  29. /// </summary>
  30. /// <param name="pageindex">当前页</param>
  31. /// <param name="pagesize">每页条数</param>
  32. /// <returns></returns>
  33. [HttpGet("getlistbypage")]
  34. public async Task<IActionResult> GetListByPageAsync(string keyword, string deptid, string roleid, int pageindex = 1, int pagesize = 20)
  35. {
  36. List<IConditionalModel> conModels = new List<IConditionalModel>();
  37. #region 筛选
  38. conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumUserCountState.Enabled).ToString() });
  39. if (!string.IsNullOrEmpty(deptid))
  40. conModels.Add(new ConditionalModel() { FieldName = "F_DeptId", ConditionalType = ConditionalType.Equal, FieldValue = deptid });
  41. if (!string.IsNullOrEmpty(roleid))
  42. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = roleid });
  43. if (!string.IsNullOrEmpty(keyword))
  44. conModels.Add(new ConditionalCollections()
  45. {
  46. ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>()
  47. {
  48. new KeyValuePair<WhereType, ConditionalModel>(WhereType.And, new ConditionalModel() { FieldName = "F_UserCode", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  49. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or , new ConditionalModel() { FieldName = "F_UserName", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  50. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Mobile", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
  51. new KeyValuePair<WhereType, ConditionalModel>( WhereType.Or, new ConditionalModel() { FieldName = "F_Telephone", ConditionalType = ConditionalType.Like, FieldValue = keyword })
  52. }
  53. });
  54. #endregion
  55. int recordCount = 0;
  56. var list = await _sys_useraccountRepository.GetListViewByPage(conModels, new MyPageModel() { PageIndex = pageindex, PageSize = pagesize, PageCount = recordCount }, "F_CreateOn desc");
  57. return Success("获取成功", list);
  58. }
  59. [HttpGet("getlistdrop")]
  60. public async Task<IActionResult> GetListDropAsync(string deptid, string roleid,string rolecode)
  61. {
  62. List<IConditionalModel> conModels = new List<IConditionalModel>();
  63. #region 筛选
  64. conModels.Add(new ConditionalModel() { FieldName = "F_DeleteFlag", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumUserCountState.Enabled).ToString() });
  65. if (!string.IsNullOrEmpty(deptid))
  66. conModels.Add(new ConditionalModel() { FieldName = "F_DeptId", ConditionalType = ConditionalType.Equal, FieldValue = deptid });
  67. if (!string.IsNullOrEmpty(roleid))
  68. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = roleid });
  69. if(!string.IsNullOrEmpty(rolecode))
  70. {
  71. var rolemodel=await _sys_role_infoRepository.GetSingle(x => x.F_RoleCode == rolecode && x.F_State == (int)EnumDelState.Enabled);
  72. if (rolemodel != null)
  73. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = rolemodel.F_RoleId.ToString() });
  74. else
  75. conModels.Add(new ConditionalModel() { FieldName = "F_RoleId", ConditionalType = ConditionalType.Equal, FieldValue = "-1" });
  76. }
  77. #endregion
  78. var list = await _sys_useraccountRepository.GetListALL(conModels, "F_CreateOn desc");
  79. var result = list.Select(x => new {
  80. x.F_UserCode,
  81. x.F_UserName,
  82. x.F_DeptId,
  83. x.F_RoleId,
  84. x.F_UserId
  85. });
  86. return Success("获取成功", result);
  87. }
  88. /// <summary>
  89. /// 获取用户详情 by id
  90. /// </summary>
  91. /// <param name="id">设备id</param>
  92. /// <returns></returns>
  93. [HttpGet("getdetails")]
  94. public async Task<IActionResult> GetDetailsAsync(int id)
  95. {
  96. if (id <= 0)
  97. return Error("参数错误");
  98. var model = await _sys_useraccountRepository.GetSingle(x => x.F_UserId == id && x.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  99. if (model != null)
  100. {
  101. return Success("获取成功!", model);
  102. }
  103. return Error("获取失败");
  104. }
  105. /// <summary>
  106. /// 添加用户信息
  107. /// </summary>
  108. /// <param name="input">用户信息参数</param>
  109. /// <returns></returns>
  110. [HttpPost("add")]
  111. public async Task<IActionResult> Add(UserAccountInput input)
  112. {
  113. #region 验证判断
  114. if (string.IsNullOrEmpty(input.usercode))
  115. return Error("账号不能为空");
  116. if (string.IsNullOrEmpty(input.password))
  117. return Error("密码不能为空");
  118. //if (string.IsNullOrEmpty(input.mobile))
  119. // return Error("手机号码不能为空");
  120. if(await _sys_useraccountRepository.GetCount(p => p.F_UserCode == input.usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) >0)
  121. {
  122. return Error("账号已经存在");
  123. }
  124. #endregion
  125. var model = new T_Sys_UserAccount();
  126. model.F_UserCode = input.usercode;
  127. model.F_UserName = input.username;
  128. model.F_Password = input.password;
  129. model.F_SexFlag = input.sexflag;
  130. model.F_DeptId = input.deptid;
  131. model.F_ExtensionNumber = input.extensionnumber;
  132. model.F_RoleId = input.roleid;
  133. model.F_SeartGroupID = input.seartgroupiD;
  134. model.F_SeatFlag = input.seatflag;
  135. model.F_SeatLevel = input.seatlevel;
  136. model.F_SeatRight = input.seatright;
  137. model.F_RemindFlag = input.remindflag;
  138. model.F_Remark = input.remark;
  139. model.F_HeadImg = input.headimg;
  140. model.F_WXNo = input.wxno;
  141. model.F_Telephone = input.telephone;
  142. model.F_Mobile = input.mobile;
  143. model.F_HomePhone = input.remark;
  144. model.F_WxOpenId = "";
  145. model.F_DutyId = input.dutyid;
  146. model.F_DeptTeamId = input.deptteamid;
  147. model.F_EntryDate = input.entrydate;
  148. model.F_FullDate = input.fulldate;
  149. model.F_TermDate = input.termdate;
  150. model.F_DeleteFlag = (int)EnumUserCountState.Enabled;
  151. model.F_CreateBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  152. model.F_CreateOn = DateTime.Now;
  153. var b = await _sys_useraccountRepository.Add(model);
  154. if (b>0)
  155. return Success("添加成功");
  156. else
  157. return Error("添加失败");
  158. }
  159. /// <summary>
  160. /// 修改用户信息
  161. /// </summary>
  162. /// <param name="input"></param>
  163. /// <returns></returns>
  164. [HttpPost("update")]
  165. public async Task<IActionResult> Update(UserAccountInput input)
  166. {
  167. #region 验证判断
  168. if (string.IsNullOrEmpty(input.usercode))
  169. return Error("账号不能为空");
  170. if (await _sys_useraccountRepository.GetCount(p => p.F_UserCode == input.usercode && p.F_UserId != input.userid && p.F_DeleteFlag == (int)EnumUserCountState.Enabled) > 0)
  171. {
  172. return Error("账号已经存在");
  173. }
  174. #endregion
  175. var model = new T_Sys_UserAccount();
  176. model = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == input.userid && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  177. if (model == null)
  178. return Error("获取信息失败");
  179. model.F_UserCode = input.usercode;
  180. model.F_UserName = input.username;
  181. model.F_SexFlag = input.sexflag;
  182. model.F_DeptId = input.deptid;
  183. model.F_ExtensionNumber = input.extensionnumber;
  184. model.F_RoleId = input.roleid;
  185. model.F_SeartGroupID = input.seartgroupiD;
  186. model.F_SeatFlag = input.seatflag;
  187. model.F_SeatLevel = input.seatlevel;
  188. model.F_SeatRight = input.seatright;
  189. model.F_RemindFlag = input.remindflag;
  190. model.F_Remark = input.remark;
  191. model.F_HeadImg = input.headimg;
  192. model.F_WXNo = input.wxno;
  193. model.F_Telephone = input.telephone;
  194. model.F_Mobile = input.mobile;
  195. model.F_HomePhone = input.homephone;
  196. model.F_DutyId = input.dutyid;
  197. model.F_DeptTeamId = input.deptteamid;
  198. model.F_EntryDate = input.entrydate;
  199. model.F_FullDate = input.fulldate;
  200. model.F_TermDate = input.termdate;
  201. model.F_LastModifyBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  202. model.F_LastModifyOn = DateTime.Now;
  203. bool b = await _sys_useraccountRepository.Update(model);
  204. if (b)
  205. return Success("保存成功");
  206. else
  207. return Error("保存失败");
  208. }
  209. /// <summary>
  210. /// 逻辑删除用户
  211. /// </summary>
  212. /// <param name="ids"></param>
  213. /// <returns></returns>
  214. [HttpPost("delete")]
  215. public async Task<IActionResult> Delete(int[] ids)
  216. {
  217. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  218. //使用逻辑删除
  219. //物理删除的数据无法恢复
  220. if (ids != null && ids.Length > 0)
  221. {
  222. foreach (var item in ids)
  223. {
  224. var eq = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == item );
  225. if (eq != null)
  226. {
  227. eq.F_DeleteFlag = (int)EnumUserCountState.Delete;
  228. eq.F_DeleteBy = usercode;
  229. eq.F_DeleteOn = DateTime.Now.ToLocalTime();
  230. bool bl = await _sys_useraccountRepository.Update(eq);
  231. }
  232. }
  233. return Success("删除成功");
  234. }
  235. else
  236. return Error("请选择要删除的记录");
  237. }
  238. /// <summary>
  239. /// 获取当前用户信息
  240. /// </summary>
  241. /// <returns></returns>
  242. [HttpGet("getnowuser")]
  243. public async Task<IActionResult> GetNowUser()
  244. {
  245. string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  246. var userModel = await _sys_useraccountRepository.GetSingle(u => u.F_UserCode == nowusercode && u.F_DeleteFlag== (int)EnumUserCountState.Enabled);
  247. if (userModel == null)
  248. return Error("获取失败");
  249. return Success("获取成功", userModel);
  250. }
  251. /// <summary>
  252. /// 修改用户密码
  253. /// </summary>
  254. /// <param name="input"></param>
  255. /// <returns></returns>
  256. [HttpPost("updatepassword")]
  257. public async Task<IActionResult> UpdatePassword(string usercode, string password, string surepassword)
  258. {
  259. #region 验证判断
  260. if (string.IsNullOrEmpty(usercode))
  261. return Error("请选择账号");
  262. if (string.IsNullOrEmpty(password))
  263. return Error("密码不能为空");
  264. if (string.IsNullOrEmpty(surepassword))
  265. return Error("确认密码不能为空");
  266. if (password != surepassword)
  267. return Error("两次输入的密码不一致");
  268. #endregion
  269. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  270. if (model == null)
  271. return Error("操作失败");
  272. model.F_Password = password;
  273. bool b = await _sys_useraccountRepository.Update(model);
  274. if (b)
  275. return Success("保存成功");
  276. return Error("保存失败");
  277. }
  278. /// <summary>
  279. /// 修改我的密码
  280. /// </summary>
  281. /// <param name="input"></param>
  282. /// <returns></returns>
  283. [HttpPost("updatemypassword")]
  284. public async Task<IActionResult> UpdateMyPassword(string oldpassword, string password, string surepassword)
  285. {
  286. #region 验证判断
  287. if (string.IsNullOrEmpty(oldpassword))
  288. return Error("原密码不能为空");
  289. if (string.IsNullOrEmpty(surepassword))
  290. return Error("确认密码不能为空");
  291. if (password != surepassword)
  292. return Error("两次输入的密码不一致");
  293. #endregion
  294. var usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  295. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_Password == oldpassword && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  296. if (model == null)
  297. return Error("原密码输入错误");
  298. model.F_Password = password;
  299. bool b = await _sys_useraccountRepository.Update(model);
  300. if (b)
  301. return Success("更新成功");
  302. return Error("更新失败");
  303. }
  304. }
  305. }