郑州市第一人民医院

DistriAddressController.cs 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using MadRunFabric.Common;
  7. using Microsoft.AspNetCore.Authorization;
  8. using Microsoft.Extensions.Logging;
  9. using DistributionApi.IRepositories;
  10. using Api.SignToken;
  11. using System.Security.Claims;
  12. using DistributionApi.Models.Input;
  13. using MadRunFabric.Model;
  14. using DistributionApi.Model.Dto;
  15. namespace DistributionApi.Controllers
  16. {
  17. /// <summary>
  18. /// 配送地址管理 - 不用了
  19. /// </summary>
  20. [Authorize]
  21. [ApiVersion("6.0")]
  22. [Route("api/[controller]")]
  23. [Produces("application/json")]
  24. public class DistriAddressController : BaseController
  25. {
  26. private readonly ILogger<DistriAddressController> _logger;
  27. private readonly ISignTokenService _signTokenService;
  28. private readonly IDistri_AddressRepository _distri_adressrepository;
  29. private readonly ISys_DepartmentRepository _sys_departmentpository;
  30. public DistriAddressController(
  31. ILogger<DistriAddressController> logger,
  32. ISignTokenService signTokenService,
  33. IDistri_AddressRepository distri_adressrepository,
  34. ISys_DepartmentRepository sys_departmentpository
  35. )
  36. {
  37. _logger = logger;
  38. _signTokenService = signTokenService;
  39. _distri_adressrepository = distri_adressrepository;
  40. _sys_departmentpository = sys_departmentpository;
  41. }
  42. /// <summary>
  43. /// 获取地址列表分页 by page
  44. /// </summary>
  45. /// <param name="keyword"></param>
  46. /// <param name="stime"></param>
  47. /// <param name="etime"></param>
  48. /// <param name="pageindex"></param>
  49. /// <param name="pagesize"></param>
  50. /// <returns></returns>
  51. [HttpGet("getlistbypage")]
  52. public IActionResult GetListByPageAsync(string keyword, string projectid, string buildingid, string floorid,int addresstype = -1, int pageindex = 1, int pagesize = 10)
  53. {
  54. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  55. var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  56. var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  57. //获取数据
  58. int recordCount = 0;
  59. var result = _distri_adressrepository.GetListsByPage(keyword, projectid, buildingid, floorid, userinfo, addresstype, pageindex, pagesize, out recordCount);
  60. var obj = new
  61. {
  62. rows = result.ToList(),
  63. total = recordCount
  64. };
  65. return Success("获取成功", obj);
  66. }
  67. /// <summary>
  68. /// 获取地址列表 - 下拉
  69. /// </summary>
  70. /// <returns></returns>
  71. [HttpGet("getlist")]
  72. public IActionResult GetListAsync(string keyword, string projectid, int addresstype = -1)
  73. {
  74. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  75. var userstr = _signTokenService.GetUserInfoAsync(usercode).Result;
  76. var userinfo = userstr.ToJObject()["data"].ToString().ToObject<UserInfoModel>();
  77. //获取数据
  78. var result = _distri_adressrepository.GetLists(keyword, projectid, userinfo, addresstype);
  79. #region 遍历计算 - 科室表不用,楼层备注为科室
  80. ////所有科室
  81. //var listDep = (await _sys_departmentpository.Get(x => x.isdelete == 0)).ToList();
  82. //var list = new List<Distri_AddressDto>();
  83. //foreach (var item in result)
  84. //{
  85. // //初始化全局变量
  86. // deptmentNames = string.Empty;
  87. // var deptmentNames_Item = GetDeptmentNames(listDep, item.departmentid);
  88. // #region 倒序排序
  89. // //定义临时变量
  90. // string strRestult = "";
  91. // string[] split = deptmentNames_Item.Split(new char[] { '|' }, 2);
  92. // for (int i = split.Length - 1; i >= 0; i--)
  93. // {
  94. // strRestult += split[i] + "|";
  95. // }
  96. // strRestult = strRestult.TrimEnd(new char[] { '|' });
  97. // #endregion
  98. // item.departmentname = strRestult;
  99. // list.Add(item);
  100. //}
  101. #endregion
  102. return Success("获取成功", result.ToList());
  103. }
  104. /// <summary>
  105. /// 循环获取科室名称(一级|二级|三级...)
  106. /// </summary>
  107. /// <param name="list"></param>
  108. /// <param name="pid"></param>
  109. /// <returns></returns>
  110. string deptmentNames = "";
  111. public string GetDeptmentNames(List<Sys_Department> list, string depid)
  112. {
  113. string pid = "";
  114. var model = list.FirstOrDefault(x => x.id == depid);
  115. if (model != null)
  116. {
  117. pid = model.parent_id;
  118. deptmentNames += model.departmenname + "|";
  119. GetDeptmentNames(list, pid);
  120. }
  121. deptmentNames = deptmentNames.TrimEnd(new char[] { '|' });
  122. return deptmentNames;
  123. }
  124. /// <summary>
  125. /// 获取地址详情
  126. /// </summary>
  127. [HttpGet("getsingle")]
  128. public IActionResult GetSingleAsync(string id)
  129. {
  130. var model = _distri_adressrepository.GetDetails(id);
  131. return Success("获取成功", model);
  132. }
  133. /// <summary>
  134. /// 添加地址
  135. /// </summary>
  136. [HttpPost("add")]
  137. public async Task<IActionResult> AddAsync(DistriAddressInput input)
  138. {
  139. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  140. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  141. #region 判断验证
  142. if (string.IsNullOrEmpty(input.projectid))
  143. return Error("请选择项目");
  144. if (string.IsNullOrWhiteSpace(input.fullname))
  145. return Error("请输入客户姓名");
  146. if (string.IsNullOrEmpty(input.mobile))
  147. return Error("请输入来电电话");
  148. #endregion
  149. var model = new Distri_Address();
  150. //判断是否有默认地址,如果没有添加时设置为默认地址
  151. var list_addresstype = (await _distri_adressrepository.Get(x => x.addresstype == model.addresstype && x.createtby == usercode && x.isdefault == true && x.isdelete == 0)).ToList(); //x.createtby == usercode &&
  152. #region model 添加地址对象
  153. model.isdefault = input.isdefault;
  154. if (list_addresstype != null && list_addresstype.Count > 0)
  155. {
  156. if (input.isdefault)
  157. {
  158. foreach (var item in list_addresstype)
  159. {
  160. item.isdefault = false;
  161. await _distri_adressrepository.UpdateOne(item);
  162. }
  163. }
  164. }
  165. else
  166. {
  167. model.isdefault = true;
  168. }
  169. model.addresstype = input.addresstype;
  170. model.projectid = input.projectid;
  171. model.buildingid = input.buildingid;
  172. model.floorid = input.floorid;
  173. //model.departmentid = input.departmentid; //不用了
  174. model.fullname = input.fullname;
  175. model.mobile = input.mobile;
  176. model.remark = input.remark;
  177. model.sortnum = input.addresstype;
  178. model.createtby = usercode;
  179. #endregion
  180. bool bl = await _distri_adressrepository.Add(model);
  181. if (bl)
  182. {
  183. return Success("保存成功");
  184. }
  185. else
  186. return Error("保存失败");
  187. }
  188. /// <summary>
  189. /// 修改地址
  190. /// </summary>
  191. [HttpPost("update")]
  192. public async Task<IActionResult> UpdateAsync(DistriAddressInput input)
  193. {
  194. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  195. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  196. var model = (await _distri_adressrepository.GetSingle(p => p.id == input.id));
  197. if (model != null)
  198. {
  199. #region 判断验证
  200. if (string.IsNullOrEmpty(input.projectid))
  201. return Error("请选择项目");
  202. if (string.IsNullOrWhiteSpace(input.fullname))
  203. return Error("请输入客户姓名");
  204. if (string.IsNullOrEmpty(input.mobile))
  205. return Error("请输入来电电话");
  206. #endregion
  207. //判断是否有默认地址,如果没有添加时设置为默认地址
  208. var list_addresstype = (await _distri_adressrepository.Get(x => x.addresstype == model.addresstype && x.createtby == usercode && x.isdefault == true && x.isdelete == 0)).ToList(); //x.createtby == usercode &&
  209. #region model 添加地址对象
  210. model.isdefault = input.isdefault;
  211. if (input.isdefault)
  212. {
  213. if (list_addresstype != null && list_addresstype.Count > 0)
  214. {
  215. foreach (var item in list_addresstype)
  216. {
  217. item.isdefault = false;
  218. await _distri_adressrepository.UpdateOne(item);
  219. }
  220. }
  221. }
  222. model.addresstype = input.addresstype;
  223. model.projectid = input.projectid;
  224. model.buildingid = input.buildingid;
  225. model.floorid = input.floorid;
  226. //model.departmentid = input.departmentid; //不用了
  227. model.fullname = input.fullname;
  228. model.mobile = input.mobile;
  229. model.remark = input.remark;
  230. model.sortnum = input.addresstype;
  231. #endregion
  232. bool b = await _distri_adressrepository.UpdateOne(model);
  233. if (b)
  234. {
  235. return Success("保存成功");
  236. }
  237. else
  238. return Error("保存失败");
  239. }
  240. return Error("操作失败");
  241. }
  242. /// <summary>
  243. /// 设置默认地址
  244. /// </summary>
  245. [HttpPost("UpdateDefault")]
  246. public async Task<IActionResult> UpdateDefaultAsync(string id)
  247. {
  248. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  249. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  250. var model = (await _distri_adressrepository.GetSingle(p => p.id == id));
  251. var list_addresstype = (await _distri_adressrepository.Get(x => x.addresstype == model.addresstype && x.createtby == usercode && x.isdefault == true && x.isdelete == 0)).ToList(); //p.createtby == usercode &&
  252. if (list_addresstype != null && list_addresstype.Count>0)
  253. {
  254. foreach (var item in list_addresstype)
  255. {
  256. item.isdefault = false;
  257. bool b = await _distri_adressrepository.UpdateOne(item);
  258. }
  259. }
  260. if (model != null)
  261. {
  262. model.isdefault = true;
  263. bool b = await _distri_adressrepository.UpdateOne(model);
  264. if (b)
  265. {
  266. return Success("保存成功");
  267. }
  268. else
  269. return Error("保存失败");
  270. }
  271. return Error("操作失败");
  272. }
  273. /// <summary>
  274. /// 删除地址
  275. /// </summary>
  276. /// <param name="ids"></param>
  277. /// <returns></returns>
  278. [HttpPost("delete")]
  279. public async Task<IActionResult> DeleteAsync(string[] ids)
  280. {
  281. string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  282. string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  283. //使用逻辑删除
  284. var res = 0;
  285. if (ids != null && ids.Length > 0)
  286. {
  287. foreach (var id in ids)
  288. {
  289. var model = await _distri_adressrepository.GetSingle(id);
  290. model.isdelete = 1;
  291. model.deleteby = usercode;
  292. model.deletetime = DateTime.Now;
  293. if (await _distri_adressrepository.UpdateOne(model))
  294. {
  295. res += 1;
  296. }
  297. }
  298. if (res == ids.Length)
  299. return Success("删除成功");
  300. else if (res > 0 && res < ids.Length)
  301. return Error("部分删除失败");
  302. else
  303. return Error("删除失败");
  304. }
  305. else
  306. return Error("请选择要删除的记录");
  307. }
  308. }
  309. }