Exemplo n.º 1
0
        /// <summary>
        /// 众筹发消息
        /// </summary>
        /// <param name="msgId"></param>
        /// <param name="appId"></param>
        /// <param name="endTime"></param>
        /// <param name="content"></param>
        public void SendMessage(Guid msgId, Guid appId, DateTime?endTime, CrowdfundingMessageDTO content)
        {
            //给邀请人发送系统消息
            //调用消息中心发消息
            //定义消息内容
            MobileMessageDTO messageDTO = new MobileMessageDTO();

            messageDTO.MessageType = JAP.BaseApp.MessageCenter.Deploy.Enum.MessageType.BUSI_MSG;

            messageDTO.AppId                = appId.ToString().ToLower();
            messageDTO.BasicContentDTO      = new BasicContentDTO();
            messageDTO.BasicContentDTO.Code = "CfStateChange";//"BTPShareRedEnvelope";

            messageDTO.ProductType = JAP.BaseApp.MessageCenter.Deploy.Enum.ProductType.BTP;
            //messageDTO.ProductSecondType = 3;

            DataContractJsonSerializer json = new DataContractJsonSerializer(content.GetType());
            string szJson = "";

            //序列化
            using (MemoryStream stream = new MemoryStream())
            {
                json.WriteObject(stream, content);
                szJson = Encoding.UTF8.GetString(stream.ToArray());
            }

            messageDTO.BasicContentDTO.Content = szJson.Replace("\"", "\\\"");
            //messageDTO.Content = szJson.Replace("\"", "\\\""); ;

            if (endTime != null)
            {
                messageDTO.EndTime = (DateTime)endTime;
            }
            //接收人邀请人Id
            messageDTO.UserIds = "[]";


            PublishMobileMessageFacade facade = new PublishMobileMessageFacade();

            try
            {
                facade.AddMessage(messageDTO);
                //LogHelper.Info("众筹状态改变消息内容:" + messageDTO.AppId + ":" + messageDTO.BasicContentDTO.Content);
                LogHelper.Info(string.Format("众筹状态改变消息内容。messageDTO:{0}", JsonHelper.JsonSerializer(messageDTO)));
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("发送众筹状态改变消息异常。messageDTO:{0}", JsonHelper.JsonSerializer(messageDTO)), ex);
                // JAP.Common.Loging.LogHelper.Error("发送众筹状态改变消息异常", ex);
            }
        }
Exemplo n.º 2
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
            });
        }