username@email.com
2024-09-09 cc170291673472d3cda8d7ea77f6bd3a3b5dbb83
CoreCms.Net.Services/Order/CoreCmsPlanOrderServices.cs
@@ -35,6 +35,8 @@
using CoreCms.Net.Model.Entities.baifenbingfa.Promote;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ScanProductAddV2Request.Types.Product.Types;
using NPOI.SS.Formula.Functions;
using CoreCms.Net.Model.FromBody;
using Essensoft.Paylink.Alipay.Domain;
namespace CoreCms.Net.Services
@@ -48,17 +50,20 @@
        private readonly IUnitOfWork _unitOfWork;
        private readonly ICoreCmsPlanOrderItemRepository _itemDal;
        private readonly ICoreCmsUserServices _coreCmsUserServices;
        private readonly ICoreCmsUserServices _userServices;
        public CoreCmsPlanOrderServices(IUnitOfWork unitOfWork, ICoreCmsPlanOrderRepository dal
            , ICoreCmsPlanOrderItemRepository itemDal
            , ICoreCmsUserServices coreCmsUserServices)
            , ICoreCmsUserServices coreCmsUserServices
            , ICoreCmsUserServices userServices)
        {
            this._dal = dal;
            base.BaseDal = dal;
            _unitOfWork = unitOfWork;
            _itemDal = itemDal;
            _coreCmsUserServices = coreCmsUserServices;
        }
            _userServices =userServices;
    }
        #region 实现重写增删改查操作==========================================================
@@ -97,9 +102,72 @@
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdAsync(object id)
        public async Task<AdminUiCallBack> DeleteByIdAsync(object id,string userName)
        {
            return await _dal.DeleteByIdAsync(id);
            var jm = new AdminUiCallBack() ;
            try
            {
                //开始事务处理
                _unitOfWork.BeginTran();
                var order = await _dal.QueryByIdAsync(id);
                if (order.status == 2)  //&& string.IsNullOrEmpty(houtai)
                {
                    _unitOfWork.RollbackTran();
                    jm.code = 1;
                    jm.msg = "订单已经锁单不能重复锁单";
                    return jm;
                }
                order.upDataBy = userName;
                order.upDataTime = DateTime.Now;
                //order.keYongAmount = order.oldOrderAmount - order.orderAmount;
                    order.status = 2;
                //if (order.keYongAmount > 0)
                //{
                //    //修改用户余额
                //    var jmsss = await _coreCmsUserServices.UpdateBalance(order.userId, order.keYongAmount, "用户计划订单" + order.orderId + "款项结余");
                //}
                //}
                //校验后再创建订单
                var jmss = await _dal.UpdateAsync(order);
                _unitOfWork.CommitTran();
                jm.code = 0;
                jm.data = order;
                jm.msg = "锁单成功";
            }
            catch (Exception e)
            {
                _unitOfWork.RollbackTran();
                jm.code = 1;
                jm.msg = e.ToString();
            }
            return jm;
            //return await _dal.DeleteByIdAsync(id);
        }
        /// <summary>
@@ -107,9 +175,77 @@
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
        public async Task<AdminUiCallBack> DeleteByIdsAsync(string[] ids, string userName)
        {
            return await _dal.DeleteByIdsAsync(ids);
            var jm = new AdminUiCallBack();
            try
            {
                //开始事务处理
                _unitOfWork.BeginTran();
                var orders = await _dal.QueryListByClauseAsync(p => ids.Contains(p.orderId), p => p.orderId, OrderByType.Asc, true);
                foreach (var order in orders)
                {
                    if (order.status != 2)  //&& string.IsNullOrEmpty(houtai)
                    {
                        order.upDataBy = userName;
                        order.upDataTime = DateTime.Now;
                        order.status = 2;
                        //校验后再创建订单
                        var jmss = await _dal.UpdateAsync(order);
                    }
                    //order.keYongAmount = order.oldOrderAmount - order.orderAmount;
                    //if (order.keYongAmount > 0)
                    //{
                    //    //修改用户余额
                    //    var jmsss = await _coreCmsUserServices.UpdateBalance(order.userId, order.keYongAmount, "用户计划订单" + order.orderId + "款项结余");
                    //}
                    //}
                }
                _unitOfWork.CommitTran();
                jm.code = 0;
                jm.data = orders;
                jm.msg = "锁单成功";
            }
            catch (Exception e)
            {
                _unitOfWork.RollbackTran();
                jm.code = 1;
                jm.msg = e.ToString();
            }
            return jm;
            //return await _dal.DeleteByIdsAsync(ids);
        }
        #endregion
@@ -139,10 +275,10 @@
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<IPageList<CoreCmsPlanOrder>> QueryPageAsync(Expression<Func<CoreCmsPlanOrder, bool>> predicate,
            Expression<Func<CoreCmsPlanOrder, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            Expression<Func<CoreCmsPlanOrder, object>> orderByExpression, OrderByType orderByType, OtherData otherData , int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
            return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, otherData, pageIndex, pageSize, blUseNoLock);
        }
        #endregion
@@ -151,7 +287,7 @@
        /// 获取计划订单列表微信小程序
        /// </summary>
        /// <returns></returns>
        public async Task<WebApiCallBack> GetOrderList(int status = -1, int userId = 0, int page = 1, int limit = 5)
        public async Task<WebApiCallBack> GetOrderList(int status = -1, int userId = 0, int page = 1, int limit = 5, int money = 0)
        {
            var jm = new WebApiCallBack { status = true };
@@ -163,7 +299,13 @@
            }
            if (userId > 0)
            {
                //var user = await _unitOfWork.GetDbClient().Queryable<CoreCmsUser>().Where(x => x.id == userId).FirstAsync();
                where = where.And(p => p.userId == userId);
            }
            if (money > 0)
            {
                where = where.And(p => p.keYongAmount > p.huaFeiAmount);
            }
            var list = await _dal.QueryPageAsync(where, p => p.createTime, OrderByType.Desc, page, limit);
@@ -173,7 +315,7 @@
                {
                    //获取相关状态描述说明转换
                    order.statusText = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.PlanOrderTiJiao>(order.status);
                    order.keYongAmount = order.keYongAmount - order.huaFeiAmount;
                }
            }
            jm.data = new
@@ -201,8 +343,9 @@
        /// <param name="status">计划订单状态</param>
        /// <param name="itemIds">明细id</param>
        /// <param name="itemNums">明细数量</param>
        /// <param name="houtai">是否后台编辑</param>
        /// <returns></returns>
        public async Task<WebApiCallBack> ToUpdate(string orderId, int userId, string userName, int status, string itemIds, string itemNums)
        public async Task<WebApiCallBack> ToUpdate(string orderId, int userId, string userName, int status, string itemIds, string itemNums, string houtai = "")
        {
            var jm = new WebApiCallBack() { methodDescription = "修改计划订单" };
            try
@@ -210,7 +353,15 @@
                //开始事务处理
                _unitOfWork.BeginTran();
                var order  = await _dal.QueryByIdAsync(orderId);
                var oldorderAmount = order.orderAmount;
                if (order.status == 2 && string.IsNullOrEmpty(houtai))
                {
                    _unitOfWork.RollbackTran();
                    jm.status = false;
                    jm.otherData = "订单已经锁单不能修改";
                    return jm;
                }
                order.upDataBy = userName;
                order.upDataTime = DateTime.Now;
@@ -234,28 +385,36 @@
                }
                order.orderAmount = orderAmount;
                order.keYongAmount = order.oldOrderAmount - order.orderAmount;
                order.keYongAmount = order.oldOrderAmount - order.orderAmount ;
                if (order.keYongAmount < 0)
                if (order.keYongAmount < order.huaFeiAmount)
                {
                    _unitOfWork.RollbackTran();
                    jm.status = false;
                    jm.otherData = "可用余额不能为负";
                    jm.otherData = "可用余额不足";
                    return jm;
                }
                if (status == 2)
                {
                    order.status = 2;
                //var keYongAmount = oldorderAmount - orderAmount;
                //if (order.status == 1)
                //{
                //    keYongAmount = order.oldOrderAmount - order.orderAmount;
                //}
                //if (status == 2)
                //{
                //    order.status = 2;
                    if (order.keYongAmount > 0)
                    {
                        //修改用户余额
                //    if (keYongAmount != 0)
                //    {
                //        //修改用户余额
                        var jmsss = await _coreCmsUserServices.UpdateBalance(order.userId, order.keYongAmount, "用户计划订单款项结余");
                    }
                //        var jmsss = await _coreCmsUserServices.UpdateBalance(order.userId, keYongAmount, "用户计划订单"+ order.orderId + "款项结余");
                //    }
                    
                }
                //}
                //校验后再创建订单
@@ -305,17 +464,50 @@
                order.status = 1;
                order.shipMobile = jiHuaOrders[0].shipMobile;
                order.shipAddress = jiHuaOrders[0].shipAddress;
                order.shipName = jiHuaOrders[0].shipName; ;
                order.shipName = jiHuaOrders[0].shipName;
                order.shouhuoAddress = jiHuaOrders[0].shouhuoAddress;
                if (string.IsNullOrEmpty(order.shipMobile))
                {
                    //找不到用户就注册用户
                    jm.code = 1;
                    jm.msg = order.shipMobile + "联系电话不能为空";
                    return jm;
                }
                var user = await _unitOfWork.GetDbClient().Queryable<CoreCmsUser>().Where(x => x.mobile == order.shipMobile && x.isDelete == false && x.status == 1).FirstAsync();
                if (user != null)
                {
                    order.userId = user.id;
                    user.isplanorder = "是";
                  var users = await _unitOfWork.GetDbClient().Updateable(user).ExecuteCommandAsync();
                }
                else
                {
                    jm.code = 1;
                    jm.msg = order.shipMobile + "没有找到用户";
                    return jm;
                    var data = new FMWxAccountCreate
                    {
                        mobile = order.shipMobile,
                        invitecode = 0,
                        sessionAuthId = ""
                    };
                   var jms = await _userServices.SmsLogin(data);
                     user = await _unitOfWork.GetDbClient().Queryable<CoreCmsUser>().Where(x => x.mobile == order.shipMobile && x.isDelete == false && x.status == 1).FirstAsync();
                    if (user != null)
                    {
                        order.userId = user.id;
                        user.isplanorder = "是";
                        var users = await _unitOfWork.GetDbClient().Updateable(user).ExecuteCommandAsync();
                    }
                    else
                    {
                            //找不到用户就注册用户
                            jm.code = 1;
                            jm.msg = order.shipMobile + "联系电话不正确";
                            return jm;
                    }
                }
               
                order.createBy = userName;
@@ -323,10 +515,29 @@
                order.upDataBy = userName;
                order.upDataTime = DateTime.Now;
                order.isdelete = false;
                var shi = await _unitOfWork.GetDbClient().Queryable<CoreCmsArea>().Where(x => x.name == jiHuaOrders[0].shi).FirstAsync();
                if(shi == null)
                {
                    jm.code = 1;
                    jm.msg = order.shipMobile + "没有找到市";
                    return jm;
                }
                var quxian = await _unitOfWork.GetDbClient().Queryable<CoreCmsArea>().Where(x => x.name == jiHuaOrders[0].quxian && x.parentId == shi.id).FirstAsync();
                if (shi == null)
                {
                    jm.code = 1;
                    jm.msg = order.shipMobile + "没有找到区县";
                    return jm;
                }
                order.shengId = 510000;
                order.shi = jiHuaOrders[0].shi;
                order.shiId = shi.id;
                order.quxianId = quxian.id;
                order.quxian = jiHuaOrders[0].quxian;
                order.pianqu = jiHuaOrders[0].pianqu;
                decimal orderAmount = 0;
@@ -344,18 +555,36 @@
                    item.upDataBy = userName;
                    item.upDataTime = DateTime.Now;
                    item.isdelete = false;
                    item.isOld = true;
                    var jms = await _itemDal.InsertAsync(item);
                    orderAmount += item.amount;
                    item.isOld = false;
                    jms = await _itemDal.InsertAsync(item);
                    if (jms.code == 1)
                    {
                        return jms;
                    }
                }
                order.orderAmount = orderAmount;
                order.oldOrderAmount = orderAmount;
                order.keYongAmount = 0;
                order.huaFeiAmount = 0;
                //校验后再创建订单
                var jmss = await _dal.InsertAsync(order);
                var sss =  await _unitOfWork.GetDbClient().Insertable<CoreCmsPlanOrder>(order).ExecuteCommandAsync();
                //var jmss = await _dal.InsertAsync(order);
                //if (jmss.code == 1)
                //{
                //    return jmss;
                //}
@@ -374,7 +603,7 @@
            catch (Exception e)
            {
                _unitOfWork.RollbackTran();
                jm.code = 0;
                jm.code = 1;
                jm.otherData = e.ToString();
            }
            return jm;