username@email.com
2025-04-27 15eb82df2d6ec539e9d4245bfe08d531e8eb6379
zhengcaioa/zhengcaioa/Controllers/Finance/FiOrderrecievemoneyController.cs
@@ -18,6 +18,9 @@
using CommonToolsCore;
using Services;
using System.Transactions;
using System.Net.Http.Headers;
using Newtonsoft.Json.Linq;
using Microsoft.Extensions.Configuration;
namespace zhengcaioa.Controllers.Finance
{
@@ -34,11 +37,25 @@
        private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService;
        private readonly IProjectService _projectService;
        private readonly IUserService _userService;
        private readonly IFiCustomerrecievemoneyService _fiCustomerrecievemoneyService;
        private readonly IConfiguration _configuration;
        private readonly IHttpClientFactory _clientFactory;
        private readonly IFiMemberService _iMemberService;
        private readonly IPltPageService _pltPageService;
        private readonly IFiBookService _fiBookService;
        private readonly IFiMemberService _fiMemberService;
        public FiOrderrecievemoneyController(ILogger<FiOrderrecievemoneyController> logger, ILiaotianService liaotianService, IFiOrderrecievemoneyService fiOrderrecievemoneyService, ICooperOrderService cooperOrderService, IFiSubjectService ifiSubjectService
            , IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService, ICooperatecustomCustomerService cooperatecustomCustomerService
            , IProjectService projectService
            , IUserService userService)
            , IUserService userService
            , IFiCustomerrecievemoneyService fiCustomerrecievemoneyService
              , IConfiguration configuration
            , IHttpClientFactory clientFactory
             , IFiMemberService iMemberService
               , IPltPageService pltPageService
            , IFiBookService fiBookService
            , IFiMemberService fiMemberService)
        {
            _logger = logger;
            _liaotianService = liaotianService;
@@ -50,6 +67,13 @@
            _cooperatecustomCustomerService = cooperatecustomCustomerService;
            _projectService = projectService;
            _userService = userService;
            _fiCustomerrecievemoneyService = fiCustomerrecievemoneyService;
            _configuration = configuration;
            _clientFactory = clientFactory;
            _iMemberService = iMemberService;
            _pltPageService = pltPageService;
            _fiBookService = fiBookService;
            _fiMemberService = fiMemberService;
        }
        public IActionResult Index()
@@ -66,7 +90,9 @@
            actionlist.Add(actionEntity);
            ViewData["ActionInfo"] = actionlist;
            var pageEntities = _pltPageService.GetUserPage(curentuser.Id, "/FiOrderrecievemoney/Index/");
            var pageEntities2 = pageEntities.Where(x => x.PageMethod == "02").ToList();
            ViewData["ActionInfo2"] = pageEntities2;
            ViewBag.OrderType = _liaotianService.GetSYScode("CooperVisit", "jtype").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
          
@@ -128,9 +154,7 @@
            ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList();
            ViewBag.cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw);
            ViewData.Model = dto;
            return View();
@@ -149,7 +173,13 @@
            ResultEntity resultEntity = new ResultEntity();
                var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
                ViewData["curentuser"] = curentuser;
            using (TransactionScope scope = new TransactionScope())
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
           new TransactionOptions
           {
               IsolationLevel = IsolationLevel.ReadCommitted,
               Timeout = TransactionManager.MaximumTimeout
           }
           ))
            {
                data.RecStatus = "A";
                if (String.IsNullOrEmpty(data.Id))
@@ -159,39 +189,146 @@
                }
                data.Modifier = curentuser.Id;
                data.Modifytime = DateTime.Now;
                resultEntity = _fiOrderrecievemoneyService.save(data);
                CooperOrderDTO cooperOrderDTO = _cooperOrderService.Get(data.OrderId);
                CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw);
                FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                data1.RecStatus = "A";
                data1.Creater = curentuser.Id;
                data1.Createtime = DateTime.Now;
                data1.Modifier = curentuser.Id;
                data1.Modifytime = DateTime.Now;
                data1.SubjectId = data.SubjectId;
                if (data.PayType == "03")
                {
                    if(data.Recievemoney>((cooperatecustomCustomerDTO.Yufukuan ?? 0)+ (cooperatecustomCustomerDTO.Shouxinedu ?? 0) - (cooperatecustomCustomerDTO.Shenyushouxin ?? 0)))
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "剩余预付款和剩余授信不足!";
                        return new JsonResult(resultEntity);
                    }
                    else
                    {
                        if (data.Recievemoney > (cooperatecustomCustomerDTO.Yufukuan??0))
                        {
                            cooperatecustomCustomerDTO.Shenyushouxin = data.Recievemoney - (cooperatecustomCustomerDTO.Yufukuan??0);
                            if (cooperatecustomCustomerDTO.Shenyushouxin> (cooperatecustomCustomerDTO.Shouxinedu??0))
                            {
                                resultEntity.Result = false;
                                resultEntity.Message = "剩余授信不足!";
                                return new JsonResult(resultEntity);
                            }
                            cooperatecustomCustomerDTO.Yufukuan = 0;
                        }
                        else
                        {
                            cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan - data.Recievemoney;
                        }
                        resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO);
                    }
                }
                data1.AccountId = data.AccountId;
                data1.Money = data.Recievemoney;
                data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                data1.OperationalMatters = "订单收款"+ cooperOrderDTO.OrderNo;
                resultEntity = _fiOrderrecievemoneyService.save(data);
                if (data.WeishouMoney <= data.Recievemoney && cooperOrderDTO.OrderType == "05" )
                {
                    //开通会员
                    var fiMemberDTO = _iMemberService.Get(cooperOrderDTO.OrderType1);
                    //开通会员
                    string huiyuanurl = _configuration.GetSection("huiyuanurl").Value;
                    string OAWriteChangeAsync = _configuration.GetSection("OAWriteChangeAsync").Value;
                    Uri postUrl2 = new Uri(huiyuanurl + OAWriteChangeAsync);
                    JObject questions2 = new JObject();
                    questions2.Add("UserID", cooperatecustomCustomerDTO.HuiyuanId);
                    questions2.Add("PhoneNumber", cooperatecustomCustomerDTO.Tel);
                    questions2.Add("VIPName", fiMemberDTO.MemberType);
                    questions2.Add("UserName", cooperatecustomCustomerDTO.Name);
                    questions2.Add("FromName", "OA");
                FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                    string requestJson2 = questions2.ToString();
                    string result2 = string.Empty;
                    using (HttpContent httpContent = new StringContent(requestJson2))
                    {
                        httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                data1.RecordTypeId = "1";//收入
                data1.Department = "";
                        using (HttpClient httpClient = new HttpClient())
                        {
                            httpClient.Timeout = new TimeSpan(0, 0, 10);
                            HttpResponseMessage responseMessage = httpClient.PostAsync(postUrl2, httpContent).Result;
                            result2 = responseMessage.Content.ReadAsStringAsync().Result;
                        }
                    }
                    _logger.LogInformation("result2:" + result2);
                    JObject jobjectresult = (JObject)JsonConvert.DeserializeObject(result2);
                firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                    if (jobjectresult["code"] != null && jobjectresult["code"].ToString() == "1")
                    {
                        cooperatecustomCustomerDTO.HuiyuanId = jobjectresult["UserID"].ToString();
                        _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO);
                        resultEntity.Result = true;
                    }
                    else
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "写入会员权限失败";
                        return new JsonResult(resultEntity);
                    }
                data1.AccountMoney = firmAccount.Balance;
                resultEntity = _iFiAccountRecordService.save(data1);
                resultEntity = _fiAccountService.save(firmAccount);
                }
                if (data.PayType != "03")
                {
                    var sysCodeDtls = _liaotianService.GetSYScode("CooperVisit", "jtype");
                     var book = _fiBookService.Get(cooperOrderDTO.OrderType1);
                    var member = _fiMemberService.Get(cooperOrderDTO.OrderType1);
                    FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                    data1.RecStatus = "A";
                    data1.Creater = curentuser.Id;
                    data1.Createtime = DateTime.Now;
                    data1.Modifier = curentuser.Id;
                    data1.Modifytime = DateTime.Now;
                    data1.SubjectId = data.SubjectId;
                    data1.AccountId = data.AccountId;
                    data1.Money = data.Recievemoney;
                    data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                    var ssss = sysCodeDtls.Where(x => x.CodeSn == cooperOrderDTO.OrderType).FirstOrDefault();
                    if (ssss != null)
                    {
                        cooperOrderDTO.OrderTypeName = ssss.Comments;
                    }
                    if (book != null)
                    {
                        cooperOrderDTO.OrderType1 = book.BookName;
                    }
                    if (member != null)
                    {
                        cooperOrderDTO.OrderType1 = member.MemberType;
                    }
                    //data1.OperationalMatters = "订单收款" + cooperOrderDTO.OrderNo;
                    data1.OperationalMatters = cooperOrderDTO.OrderTypeName + cooperOrderDTO.OrderType1 + cooperOrderDTO.OrderType2 + " 订单收款";
                    data1.Remark = cooperOrderDTO.OrderNo;
                    FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                    data1.RecordTypeId = "1";//收入
                    data1.Department = "";
                    firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                    firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                    data1.AccountMoney = firmAccount.Balance;
                    resultEntity = _iFiAccountRecordService.save(data1);
                    resultEntity = _fiAccountService.save(firmAccount);
                }
                scope.Complete();
            }
@@ -225,7 +362,9 @@
            actionEntity.PageIco = "fa fa-search";
            actionEntity.ActionName = "查询";
            actionlist.Add(actionEntity);
            var pageEntities = _pltPageService.GetUserPage(curentuser.Id, "/FiOrderrecievemoney/IndexCustomer/");
            var pageEntities2 = pageEntities.Where(x => x.PageMethod == "02").ToList();
            ViewData["ActionInfo2"] = pageEntities2;
            ViewData["ActionInfo"] = actionlist;
@@ -255,5 +394,165 @@
            return View();
        }
        public IActionResult EditCustomer(string id = null, string CustomerId = null)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            FiCustomerrecievemoneyDTO dto = new FiCustomerrecievemoneyDTO();
            if (!String.IsNullOrEmpty(id))
            {
                dto = _fiCustomerrecievemoneyService.Get(id);
            }
            else
            {
                dto.PayTime = DateTime.Now;
                dto.CustomerId = CustomerId;
            }
            var cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(CustomerId);
            dto.CustomerName = cooperatecustomCustomerDTO.Name;
            dto.Yufukuan = cooperatecustomCustomerDTO.Yufukuan??0;
            ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList();
            ViewData.Model = dto;
            return View();
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="data">岗位实体类对象</param>
        /// <returns></returns>
        ///
        [HttpPost]
        public IActionResult SaveCustomer(FiCustomerrecievemoneyDTO data)
        {
            ResultEntity resultEntity = new ResultEntity();
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
           new TransactionOptions
           {
               IsolationLevel = IsolationLevel.ReadCommitted,
               Timeout = TransactionManager.MaximumTimeout
           }
           ))
            {
                data.RecStatus = "A";
                if (String.IsNullOrEmpty(data.Id))
                {
                    data.Creater = curentuser.Id;
                    data.Createtime = DateTime.Now;
                }
                data.Modifier = curentuser.Id;
                data.Modifytime = DateTime.Now;
                resultEntity = _fiCustomerrecievemoneyService.save(data);
                CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(data.CustomerId);
                if (cooperatecustomCustomerDTO.Shenyushouxin.HasValue)
                {
                    if(data.Recievemoney.Value> cooperatecustomCustomerDTO.Shenyushouxin.Value)
                    {
                        data.Recievemoney = data.Recievemoney.Value - cooperatecustomCustomerDTO.Shenyushouxin.Value;
                        cooperatecustomCustomerDTO.Shenyushouxin = 0;
                    }
                    else
                    {
                        cooperatecustomCustomerDTO.Shenyushouxin = cooperatecustomCustomerDTO.Shenyushouxin.Value - data.Recievemoney.Value;
                        data.Recievemoney = 0;
                    }
                }
                if(cooperatecustomCustomerDTO.Yufukuan.HasValue)
                    cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan.Value + data.Recievemoney.Value;
                 else
                    cooperatecustomCustomerDTO.Yufukuan = data.Recievemoney.Value;
                resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO);
                FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                data1.RecStatus = "A";
                data1.Creater = curentuser.Id;
                data1.Createtime = DateTime.Now;
                data1.Modifier = curentuser.Id;
                data1.Modifytime = DateTime.Now;
                data1.SubjectId = data.SubjectId;
                data1.AccountId = data.AccountId;
                data1.Money = data.Recievemoney;
                data1.PaymentUnit = cooperatecustomCustomerDTO.Name;
                data1.OperationalMatters ="客户预付款:" + data.Remark;
                FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                data1.RecordTypeId = "1";//收入
                data1.Department = "";
                firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money;
                firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money;
                data1.AccountMoney = firmAccount.Balance;
                resultEntity = _iFiAccountRecordService.save(data1);
                resultEntity = _fiAccountService.save(firmAccount);
                scope.Complete();
            }
            return new JsonResult(resultEntity);
        }
        public IActionResult IndexCustomerdtl(string CustomerId)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            List<ActionEntity> actionlist = new List<ActionEntity>();
            ActionEntity actionEntity = new ActionEntity();
            actionEntity.OpenType = 0;
            actionEntity.ActionUrl = "";
            actionEntity.ActionFun = "Search";
            actionEntity.PageIco = "fa fa-search";
            actionEntity.ActionName = "查询";
            actionlist.Add(actionEntity);
            ViewData["ActionInfo"] = actionlist;
            ViewBag.CustomerId = CustomerId;
            return View();
        }
        public IActionResult GetListCustomerdel(FiCustomerrecievemoneyDTOSearch search)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            //JsonResult jsonResult =   new JsonResult(_liaotianService.SearchByPaging(search), new Newtonsoft.Json.Serialization.DefaultContractResolver());
            return new JsonResult(_fiCustomerrecievemoneyService.SearchByPaging(search));
        }
    }
}