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

UserAccountController.cs 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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);
  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.Delete)>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_DeleteFlag = (int)EnumUserCountState.Enabled;
  145. model.F_CreateBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  146. model.F_CreateOn = DateTime.Now;
  147. var b = await _sys_useraccountRepository.Add(model);
  148. if (b>0)
  149. return Success("添加成功");
  150. else
  151. return Error("添加失败");
  152. }
  153. /// <summary>
  154. /// 修改用户信息
  155. /// </summary>
  156. /// <param name="input"></param>
  157. /// <returns></returns>
  158. [HttpPost("update")]
  159. public async Task<IActionResult> Update(UserAccountInput input)
  160. {
  161. #region 验证判断
  162. if (string.IsNullOrEmpty(input.usercode))
  163. return Error("账号不能为空");
  164. if (await _sys_useraccountRepository.GetCount(p => p.F_UserCode == input.usercode && p.F_UserId != input.userid && p.F_DeleteFlag < (int)EnumUserCountState.Delete) > 0)
  165. {
  166. return Error("账号已经存在");
  167. }
  168. #endregion
  169. var model = new T_Sys_UserAccount();
  170. model = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == input.userid);
  171. if (model == null)
  172. return Error("获取信息失败");
  173. model.F_UserCode = input.usercode;
  174. model.F_UserName = input.username;
  175. model.F_SexFlag = input.sexflag;
  176. model.F_DeptId = input.deptid;
  177. model.F_ExtensionNumber = input.extensionnumber;
  178. model.F_RoleId = input.roleid;
  179. model.F_SeartGroupID = input.seartgroupiD;
  180. model.F_SeatFlag = input.seatflag;
  181. model.F_SeatLevel = input.seatlevel;
  182. model.F_SeatRight = input.seatright;
  183. model.F_RemindFlag = input.remindflag;
  184. model.F_Remark = input.remark;
  185. model.F_HeadImg = input.headimg;
  186. model.F_WXNo = input.wxno;
  187. model.F_Telephone = input.telephone;
  188. model.F_Mobile = input.mobile;
  189. model.F_HomePhone = input.homephone;
  190. model.F_LastModifyBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  191. model.F_LastModifyOn = DateTime.Now;
  192. bool b = await _sys_useraccountRepository.Update(model);
  193. if (b)
  194. return Success("保存成功");
  195. else
  196. return Error("保存失败");
  197. }
  198. /// <summary>
  199. /// 逻辑删除用户
  200. /// </summary>
  201. /// <param name="ids"></param>
  202. /// <returns></returns>
  203. [HttpPost("delete")]
  204. public async Task<IActionResult> Delete(int[] ids)
  205. {
  206. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  207. //使用逻辑删除
  208. //物理删除的数据无法恢复
  209. if (ids != null && ids.Length > 0)
  210. {
  211. foreach (var item in ids)
  212. {
  213. var eq = await _sys_useraccountRepository.GetSingle(p => p.F_UserId == item);
  214. if (eq != null)
  215. {
  216. eq.F_DeleteFlag = (int)EnumUserCountState.Delete;
  217. eq.F_DeleteBy = usercode;
  218. eq.F_DeleteOn = DateTime.Now.ToLocalTime();
  219. bool bl = await _sys_useraccountRepository.Update(eq);
  220. }
  221. }
  222. return Success("删除成功");
  223. }
  224. else
  225. return Error("请选择要删除的记录");
  226. }
  227. /// <summary>
  228. /// 获取当前用户信息
  229. /// </summary>
  230. /// <returns></returns>
  231. [HttpGet("getnowuser")]
  232. public async Task<IActionResult> GetNowUser()
  233. {
  234. string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  235. var userModel = await _sys_useraccountRepository.GetSingle(u => u.F_UserCode == nowusercode && u.F_DeleteFlag== (int)EnumUserCountState.Enabled);
  236. if (userModel == null)
  237. return Error("获取失败");
  238. return Success("获取成功", userModel);
  239. }
  240. /// <summary>
  241. /// 修改用户密码
  242. /// </summary>
  243. /// <param name="input"></param>
  244. /// <returns></returns>
  245. [HttpPost("updatepassword")]
  246. public async Task<IActionResult> UpdatePassword(string usercode, string password, string surepassword)
  247. {
  248. #region 验证判断
  249. if (string.IsNullOrEmpty(usercode))
  250. return Error("请选择账号");
  251. if (string.IsNullOrEmpty(password))
  252. return Error("密码不能为空");
  253. if (string.IsNullOrEmpty(surepassword))
  254. return Error("确认密码不能为空");
  255. if (password != surepassword)
  256. return Error("两次输入的密码不一致");
  257. #endregion
  258. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  259. if (model == null)
  260. return Error("操作失败");
  261. model.F_Password = password;
  262. bool b = await _sys_useraccountRepository.Update(model);
  263. if (b)
  264. return Success("保存成功");
  265. return Error("保存失败");
  266. }
  267. /// <summary>
  268. /// 修改我的密码
  269. /// </summary>
  270. /// <param name="input"></param>
  271. /// <returns></returns>
  272. [HttpPost("updatemypassword")]
  273. public async Task<IActionResult> UpdateMyPassword(string oldpassword, string password, string surepassword)
  274. {
  275. #region 验证判断
  276. if (string.IsNullOrEmpty(oldpassword))
  277. return Error("原密码不能为空");
  278. if (string.IsNullOrEmpty(surepassword))
  279. return Error("确认密码不能为空");
  280. if (password != surepassword)
  281. return Error("两次输入的密码不一致");
  282. #endregion
  283. var usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  284. var model = await _sys_useraccountRepository.GetSingle(p => p.F_UserCode == usercode && p.F_Password == oldpassword && p.F_DeleteFlag == (int)EnumUserCountState.Enabled);
  285. if (model == null)
  286. return Error("原密码输入错误");
  287. model.F_Password = password;
  288. bool b = await _sys_useraccountRepository.Update(model);
  289. if (b)
  290. return Success("更新成功");
  291. return Error("更新失败");
  292. }
  293. }
  294. }