using DTO; using IServices; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Transactions; using zhengcaioa.IService; using zhengcaioa.Models; namespace zhengcaioa.Controllers.admin { public class CustomerWithdrawalController : Controller { private readonly IHrDeptService _hrDeptService; private readonly ILogger _logger; private readonly IAskService _askService; private readonly IWfRunProcessService _wfRunProcessService; private readonly IWfHistoryService _wfHistoryService; private readonly IWfNeeddeelService _wfNeeddeelService; private readonly IAdmGoodsManageService _admGoodsManageService; private readonly ILiaotianService _liaotianService; private readonly IUserService _userService; private readonly IAdmBreakPrecedentService _aAdmBreakPrecedentService; private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService; private readonly IIntentionCustomerService _intentionCustomerService; public CustomerWithdrawalController(ILogger logger, IAskService askService, IHrDeptService hrDeptService, IWfRunProcessService wfRunProcessService , IWfHistoryService wfHistoryService, IWfNeeddeelService wfNeeddeelService , IAdmGoodsManageService admGoodsManageService , ILiaotianService liaotianService , IUserService userService , IAdmBreakPrecedentService aAdmBreakPrecedentService , ICooperatecustomCustomerService cooperatecustomCustomerService , IIntentionCustomerService intentionCustomerService) { _logger = logger; _hrDeptService = hrDeptService; _askService = askService; _wfRunProcessService = wfRunProcessService; _wfHistoryService = wfHistoryService; _wfNeeddeelService = wfNeeddeelService; _admGoodsManageService = admGoodsManageService; _liaotianService = liaotianService; _userService = userService; _aAdmBreakPrecedentService = aAdmBreakPrecedentService; _cooperatecustomCustomerService = cooperatecustomCustomerService; _intentionCustomerService = intentionCustomerService; } /// /// 会员提现申请 /// /// /// [HttpPost] public IActionResult AskCustomerWithdrawal([FromBody] AdmCustomerWithdrawalDTO data) { ReturnMsg returnMsg = new ReturnMsg(); returnMsg.code = 2; try { //验证数据完整性 if (string.IsNullOrWhiteSpace(data.OrderNo)) { returnMsg.code = 2; returnMsg.error = "没有订单号!"; returnMsg.count = 0; return new JsonResult(returnMsg); } if (string.IsNullOrWhiteSpace(data.HuiyuanId)) { returnMsg.code = 2; returnMsg.error = "没有会员id!"; returnMsg.count = 0; return new JsonResult(returnMsg); } if (string.IsNullOrWhiteSpace(data.HuiyuanName)) { returnMsg.code = 2; returnMsg.error = "没有会员名称!"; returnMsg.count = 0; return new JsonResult(returnMsg); } if (string.IsNullOrWhiteSpace(data.HuiyuanPhone)) { returnMsg.code = 2; returnMsg.error = "没有会员电话!"; returnMsg.count = 0; return new JsonResult(returnMsg); } if (data.Shenqingtime == DateTime.MinValue) { returnMsg.code = 2; returnMsg.error = "没有申请日期!"; returnMsg.count = 0; return new JsonResult(returnMsg); } if (!data.Jine.HasValue) { returnMsg.code = 2; returnMsg.error = "没有提现金额!"; returnMsg.count = 0; return new JsonResult(returnMsg); } ResultEntity resultEntity = new ResultEntity(); using (TransactionScope scope = new TransactionScope()) { //验证是否重复发起 if(_askService.GetCustomerWithdrawalList(data.OrderNo).Count > 0) { returnMsg.code = 2; returnMsg.error = "该订单已经发起流程!"; returnMsg.count = 0; return new JsonResult(returnMsg); } //流程步骤 data.Step = "提交"; data.Tongguojujue = ""; data.Content = ""; data.Tittle = "会员提现申请(" + data.HuiyuanName + ")"; data.CreaterName = data.HuiyuanName; data.ShenpiStatus = "D"; data.RecStatus = "A"; data.Creater = "e4c93811-b9b1-4998-89f5-c416ebab0c07"; data.Createtime = DateTime.Now; data.Modifier = data.Creater; data.Modifytime = data.Createtime; resultEntity = _askService.SaveCustomerWithdrawal(data); if (!resultEntity.Result) { returnMsg.code = 2; returnMsg.error = resultEntity.Message; returnMsg.count = 0; return new JsonResult(returnMsg); } //发起流程相关 resultEntity = _wfRunProcessService.WfCustomerWithdrawal(data.Id, data.Step, data.Tongguojujue, "e4c93811-b9b1-4998-89f5-c416ebab0c07", data.Content, data.Tittle, "v1"); if (!resultEntity.Result) { returnMsg.code = 2; returnMsg.error = resultEntity.Message; returnMsg.count = 0; return new JsonResult(returnMsg); } scope.Complete(); returnMsg.code = 1; returnMsg.returnObj = null; returnMsg.count = 0; } } catch (Exception ex) { returnMsg.code = 2; returnMsg.error = "没有获取到token"; returnMsg.count = 0; } return new JsonResult(returnMsg); } /// /// 会员提现申请,审批结果 /// /// /// public IActionResult GetCustomerWithdrawal(string OrderNo) { ReturnMsg returnMsg = new ReturnMsg(); returnMsg.code = 2; try { //验证数据完整性 if (string.IsNullOrWhiteSpace(OrderNo)) { returnMsg.code = 2; returnMsg.error = "没有订单号!"; returnMsg.count = 0; return new JsonResult(returnMsg); } ResultEntity resultEntity = new ResultEntity(); var customerWithdrawalDTO = _askService.GetCustomerWithdrawalList(OrderNo).FirstOrDefault(); //验证是否重复发起 if (customerWithdrawalDTO == null) { returnMsg.code = 2; returnMsg.error = "没有查找到审批流程!"; returnMsg.count = 0; return new JsonResult(returnMsg); } var sysCodeDtls = _liaotianService.GetSYScode("wf_run_process", "shenpi_status"); var sysCodeDtl = sysCodeDtls.Where(x => x.CodeSn == customerWithdrawalDTO.ShenpiStatus).FirstOrDefault(); if (sysCodeDtl != null) { customerWithdrawalDTO.ShenpiStatusName = sysCodeDtl.Comments; } var wfRunProcessDTO = _wfRunProcessService.GetList(customerWithdrawalDTO.Id, "20").FirstOrDefault(); if (wfRunProcessDTO == null) { returnMsg.code = 2; returnMsg.error = "没有查找到审批流程!"; returnMsg.count = 0; return new JsonResult(returnMsg); } var lishiyijian = _wfHistoryService.GetListshenpi(wfRunProcessDTO.Id).LastOrDefault() ; if (lishiyijian == null) { returnMsg.code = 2; returnMsg.error = "没有查找到审批流程!"; returnMsg.count = 0; return new JsonResult(returnMsg); } customerWithdrawalDTO.Content = lishiyijian.Content; customerWithdrawalDTO.Step = wfRunProcessDTO.Step; returnMsg.code = 1; returnMsg.returnObj = customerWithdrawalDTO; returnMsg.count = 1; } catch (Exception ex) { returnMsg.code = 2; returnMsg.error = "没有获取到token"; returnMsg.count = 0; } return new JsonResult(returnMsg); } } }