Esempio n. 1
0
        /// <summary>
        /// 添加众筹
        /// </summary>
        /// <param name="crowdfundingDTO">众筹实体</param>
        public ResultDTO AddCrowdfundingExt(Jinher.AMP.BTP.Deploy.CrowdfundingDTO crowdfundingDTO)
        {
            if (crowdfundingDTO == null)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "入参不能为空"
                }
            }
            ;
            if (crowdfundingDTO.AppId == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "请正确填写应用"
                }
            }
            ;

            var dividendPercent = crowdfundingDTO.DividendPercent * crowdfundingDTO.ShareCount;

            if (dividendPercent > CustomConfig.CrowdfundingConfig.MaxDividend)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "您的订单成交额已不足抵扣分红,请重新设置!"
                }
            }
            ;

            if (crowdfundingDTO.StartTime < DateTime.Now)
            {
                return(new ResultDTO {
                    ResultCode = 2, Message = "众筹开始时间必须大于当前时间!"
                });
            }

            string message = "Success";

            try
            {
                var tmp = Crowdfunding.ObjectSet().FirstOrDefault(c => c.AppId == crowdfundingDTO.AppId);
                if (tmp != null)
                {
                    return new ResultDTO {
                               ResultCode = 3, Message = "该应用已经参加众筹活动,不能重复添加"
                    }
                }
                ;

                Dictionary <Guid, string> list = APPSV.GetAppNameListByIds(new List <Guid> {
                    crowdfundingDTO.AppId
                });

                if (list == null || !list.Any() || !list.ContainsKey(crowdfundingDTO.AppId) || list[crowdfundingDTO.AppId] != crowdfundingDTO.AppName.Trim())
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "应用Id与名称不符"
                    }
                }
                ;

                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                //保存众筹
                Crowdfunding entity = Crowdfunding.CreateCrowdfunding();
                entity.AppName         = crowdfundingDTO.AppName;
                entity.AppId           = crowdfundingDTO.AppId;
                entity.PerShareMoney   = crowdfundingDTO.PerShareMoney;
                entity.DividendPercent = crowdfundingDTO.DividendPercent;
                entity.ShareCount      = crowdfundingDTO.ShareCount;
                entity.StartTime       = crowdfundingDTO.StartTime;
                entity.State           = 0;
                entity.Slogan          = crowdfundingDTO.Slogan;
                entity.Description     = crowdfundingDTO.Description;
                contextSession.SaveObject(entity);

                //保存众筹计数表
                CrowdfundingCount cnt = CrowdfundingCount.CreateCrowdfundingCount();
                cnt.AppId          = entity.AppId;
                cnt.CrowdfundingId = entity.Id;
                cnt.ShareCount     = entity.ShareCount;
                contextSession.SaveObject(cnt);

                contextSession.SaveChanges();
                if (dividendPercent > CustomConfig.CrowdfundingConfig.WarnDividend)
                {
                    message = string.Format("您的分红支出已超{0:P0},请注意收支平衡!", CustomConfig.CrowdfundingConfig.WarnDividend);
                }

                CrowdfundingMessageDTO Message = new CrowdfundingMessageDTO();
                Message.Now       = DateTime.Now;
                Message.StartTime = entity.StartTime;
                Message.State     = -1;
                AddMessage addMessage = new AddMessage();
                addMessage.SendMessage(entity.Id, entity.AppId, entity.StartTime, Message);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("添加众筹服务异常。crowdfundingDTO:{0}", crowdfundingDTO), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
            return(new ResultDTO {
                ResultCode = 0, Message = message
            });
        }