//TODO:积分变更记录中没有appid? /// <summary> /// 修改积分 /// </summary> /// <param name="args"></param> public PointTrackResult PointTrack(PointTrackArgs args) { PointTrackResult result = new PointTrackResult(); if (args == null) { return(result); } if (args.Quantity == 0) { return(result); } List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@domain", args.DomainId)); parameterList.Add(new CommandParameter("@memberId", args.MemberId)); parameterList.Add(new CommandParameter("@quantity", args.Quantity)); parameterList.Add(new CommandParameter("@type", (int)args.Type)); parameterList.Add(new CommandParameter("@tagName", args.TagName)); parameterList.Add(new CommandParameter("@tagId", args.TagId)); parameterList.Add(new CommandParameter("@operatorUser", args.OperatorUser)); parameterList.Add(new CommandParameter("@remark", args.Remark)); DataSet dsResult = _dataBase.ExecuteDataSet(CommandType.StoredProcedure, "TrackMemberPoint", parameterList, new string[] { "result" }); //result.Reason = int.Parse(dsResult.Tables[0].Rows[0]["Result"].ToString()); result.Success = true; result.LeftPoint = int.Parse(dsResult.Tables[0].Rows[0]["Point"].ToString()); return(result); }
public ActionResult PointDecrement() { PointTrackArgs args = RequestArgs <PointTrackArgs>(); if (args == null) { return(RespondResult(false, "参数无效。")); } args.DomainId = DomainContext.Domain.Id; args.Type = MemberPointTrackType.UserOperate; args.OperatorUser = MemberContext.User.Id; PointTrackResult pointTrackResult = _memberManager.PointTrack(args); #region 操作日志 if (pointTrackResult.Success) { _operatedLogManager.Create(new OperatedLogEntity() { Domain = DomainContext.Domain.Id, AppId = DomainContext.AppId, User = MemberContext.User.Id, IP = Request.UserHostAddress, Module = EnumModule.Member, Description = "消减用户积分" }); } #endregion return(RespondDataResult(pointTrackResult)); }
internal PointTrackResult ShareCampaignToAppMessage(CampaignEntity campaign, Guid?memberId, string openId) { PointTrackResult result = new PointTrackResult(); if (campaign == null || campaign.Status != EnumCampaignStatus.Ongoing) { return(result); } if (campaign.ShareAppMessagePoint <= 0) { return(result); } #region 判断有没有分享过 ShareLogEntity log = ShareManager.GetShareLog(campaign.Id, openId); if (log == null) { log = new ShareLogEntity(); log.Member = memberId; log.OpenId = openId; log.PageId = campaign.Id; log.ShareAppMessage = true; ShareManager.Create(log); } else { if (log.ShareAppMessage && log.Member.HasValue) { return(result); } if (log.ShareAppMessage && memberId.HasValue == false) { return(result); } log.Member = memberId; log.ShareAppMessage = true; ShareManager.Update(log); } #endregion if (memberId.HasValue) { PointTrackArgs args = new PointTrackArgs(); args.DomainId = campaign.Domain; args.MemberId = memberId.Value; args.Quantity = campaign.ShareAppMessagePoint; args.Type = MemberPointTrackType.Campaign; args.TagName = campaign.Name; args.TagId = campaign.Id; result = MemberManager.PointTrack(args); } return(result); }
/// <summary> /// 修改审核状态 ,通过 /// </summary> /// <param name="args"></param> public NormalResult PictureVoteItemApprove(DomainContext domainContext, Campaign_PictureVoteItemApproveArgs args) { //判断是否达到最大可参与人数 if (PictureVoteIsFullParticipant(args.CampaignId)) { return(new NormalResult("该活动已达最大允许参与人数,如需调整允许参与的人数,请编辑此活动基本信息。")); } List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@id", args.ItemId)); parameterList.Add(new CommandParameter("@approveStatus", EnumCampaignPictureVoteItemApproveStatus.Approved)); _campaignManager.DataBase.ExecuteNonQuery("UPDATE [Campaign_PictureVoteItem] SET [ApproveStatus] = @approveStatus WHERE [Id] = @id", parameterList); //奖励参与者积分 if (args.MemberId.HasValue) { Campaign_PictureVoteEntity campaignPictureVote = GetPictureVote(args.CampaignId); if (campaignPictureVote.ApprovedPoint > 0) { CampaignEntity campaign = _campaignManager.GetCampaign(args.CampaignId); PointTrackArgs pointTrackArgs = new PointTrackArgs(); pointTrackArgs.DomainId = campaign.Domain; pointTrackArgs.MemberId = args.MemberId.Value; pointTrackArgs.Quantity = campaignPictureVote.ApprovedPoint; pointTrackArgs.Type = MemberPointTrackType.Campaign; pointTrackArgs.TagName = campaign.Name; pointTrackArgs.TagId = campaign.Id; _campaignManager.MemberManager.PointTrack(pointTrackArgs); } } return(new NormalResult()); }
protected override string Handle(ReceivingXMLMessage_SubscribeEventMessage message, ClientDomainContext domainContext) { //用户管理-获取用户基本信息 //未认证订阅号 未认证服务号 没有此权限 RequestApiResult <WeixinUser> getUserInfoResult = UserApiWrapper.GetUserInfo(domainContext, message.FromUserName); if (getUserInfoResult.Success == false) { return(String.Empty); } if (getUserInfoResult.ApiResult.Subscribe == 0) { return(String.Empty); } #region 判断是否是扫描带参数二维码事件 //扫描带参数二维码事件 string strScenicQRCodeId = String.Empty; if (String.IsNullOrEmpty(message.EventKey) == false) { //用户未关注时,进行关注后的事件推送 if (message.EventKey.StartsWith("qrscene_")) { strScenicQRCodeId = message.EventKey.Remove(0, "qrscene_".Length); } } //获取场景二维码Id Guid?scenicQRCodeId = null; ScenicQRCodeLandingLogEntity scenicQRCodeLandingLog = null; if (String.IsNullOrEmpty(strScenicQRCodeId) == false) { Guid scenicQRCodeId2; if (Guid.TryParse(strScenicQRCodeId, out scenicQRCodeId2)) { scenicQRCodeId = scenicQRCodeId2; scenicQRCodeLandingLog = new ScenicQRCodeLandingLogEntity(); scenicQRCodeLandingLog.Domain = domainContext.Domain.Id; scenicQRCodeLandingLog.QRCodeId = scenicQRCodeId.Value; scenicQRCodeLandingLog.VisitorOpenId = message.FromUserName; scenicQRCodeLandingLog.LandingTime = DateTime.Now; } } #endregion #region 判断是否是通过RecomendUrl引流关注的 Guid?refereeMemberId = null; //如果有场景二维码ID就不用判断RecomendUrl了 if (String.IsNullOrEmpty(strScenicQRCodeId)) { RecommendUrlLogEntity recomendUrlLog = _recommendUrlManager.GetLogByOpenId(getUserInfoResult.ApiResult.OpenId); if (recomendUrlLog != null) { refereeMemberId = recomendUrlLog.UrlOwnMember; } } #endregion //根据OpenId获取用户信息 MemberEntity member = _memberManager.GetMemberByOpenId(domainContext.Domain.Id, domainContext.AppId, getUserInfoResult.ApiResult.OpenId); AddMemberArgs args = new AddMemberArgs(); args.WeixinUser = getUserInfoResult.ApiResult; args.ScenicQRCodeId = scenicQRCodeId; args.RefereeMemberId = refereeMemberId; if (member == null) { //添加新用户 member = _memberManager.AddMember(domainContext, args); //更新场景二维码计数 if (scenicQRCodeId.HasValue) { _scenicQRCodeManager.IncrementAttentionPerson(scenicQRCodeId.Value, scenicQRCodeLandingLog); } //如果通过RecomendUrl引流关注的,奖励积分 if (refereeMemberId.HasValue && domainContext.RecommendUrlSettings != null && domainContext.RecommendUrlSettings.AttentionPoint > 0) { PointTrackArgs pointTrackArgs = new PointTrackArgs(); pointTrackArgs.DomainId = domainContext.Domain.Id; pointTrackArgs.MemberId = refereeMemberId.Value; pointTrackArgs.Quantity = domainContext.RecommendUrlSettings.AttentionPoint; pointTrackArgs.Type = MemberPointTrackType.RecommendUrl; pointTrackArgs.TagName = member.NickName; pointTrackArgs.TagId = member.Id; _memberManager.PointTrack(pointTrackArgs); } //判断是否有二级上线,对其奖励积分 if (refereeMemberId.HasValue && domainContext.RecommendUrlSettings != null && domainContext.RecommendUrlSettings.Level2AttentionPoint > 0) { RefereeUplineWrapper refereeUplineWrapper = _recommendUrlManager.GetRefereeUplineList(domainContext.Domain.Id, domainContext.AppId, refereeMemberId.Value); if (refereeUplineWrapper.Upline != null) { PointTrackArgs pointTrackArgs = new PointTrackArgs(); pointTrackArgs.DomainId = domainContext.Domain.Id; pointTrackArgs.MemberId = refereeUplineWrapper.Upline.MemberId; pointTrackArgs.Quantity = domainContext.RecommendUrlSettings.Level2AttentionPoint; pointTrackArgs.Type = MemberPointTrackType.RecommendUrl; pointTrackArgs.TagName = member.NickName; pointTrackArgs.TagId = member.Id; _memberManager.PointTrack(pointTrackArgs); } } } else { //更新当前用户信息 _memberManager.UpdateMember(member, args); //更新场景二维码计数 if (scenicQRCodeId.HasValue) { _scenicQRCodeManager.IncrementLanding(scenicQRCodeId.Value, scenicQRCodeLandingLog); } } #region 关注时的自动回复 if (domainContext.AutoReplyOnSubscribe != null && String.IsNullOrEmpty(domainContext.AutoReplyOnSubscribe.Content) == false) { ResponsiveXMLMessageBase replyMessage = AutoReplyHelper.GetXMLMessage(domainContext, message.FromUserName, domainContext.AutoReplyOnSubscribe); if (replyMessage != null) { return(XMLMessageHelper.XmlSerialize(replyMessage)); } else { return(String.Empty); } } else { return(String.Empty); } #endregion }
public ShareResult ShareAppMessage(Guid pageId, Guid?memberId, string openId) { ShareResult result = new ShareResult(); AdvancedArticleEntity advancedArticle = GetAdvancedArticle(pageId); if (advancedArticle == null) { return(result); } #region 判断有没有分享过 ShareLogEntity log = _shareManager.GetShareLog(pageId, openId); if (log == null) { log = new ShareLogEntity(); log.Member = memberId; log.OpenId = openId; log.PageId = pageId; log.ShareAppMessage = true; _shareManager.Create(log); } else { if (log.ShareAppMessage && log.Member.HasValue) { return(result); } if (log.ShareAppMessage && memberId.HasValue == false) { return(result); } log.Member = memberId; log.ShareAppMessage = true; _shareManager.Update(log); } #endregion if (advancedArticle.ShareAppMessagePoint <= 0) { return(result); } if (memberId.HasValue) { PointTrackArgs args = new PointTrackArgs(); args.DomainId = advancedArticle.Domain; args.MemberId = memberId.Value; args.Quantity = advancedArticle.ShareAppMessagePoint; args.Type = MemberPointTrackType.Share; args.TagName = advancedArticle.Title; args.TagId = advancedArticle.Id; PointTrackResult pointTrackResult = _memberManager.PointTrack(args); if (pointTrackResult.Success == false) { return(result); } result.Point = advancedArticle.ShareAppMessagePoint; } return(result); }
public string MemberQRCodeLanding(Guid campaignId, Guid qrCodeOwnMemberId, string visitorOpenId) { Campaign_MemberQRCodeBundle campaignBundle = GetMemberQRCodeBundle(campaignId); if (campaignBundle.Empty) { return(null); } if (String.IsNullOrEmpty(campaignBundle.MemberQRCode.LandingUrl)) { return(null); } //判断活动状态 EnumCampaignStatus?status = _campaignManager.GetStatus(campaignId); if (status == null || status.Value != EnumCampaignStatus.Ongoing) { //允许落地,但是不奖励了 return(campaignBundle.MemberQRCode.LandingUrl); } //如果同一个OpenId扫描过,则不奖励,但是日志还是会记录,用于统计 List <CommandParameter> logParameterList = new List <CommandParameter>(); logParameterList.Add(new CommandParameter("@campaignId", campaignId)); logParameterList.Add(new CommandParameter("@qrCodeOwnMember", qrCodeOwnMemberId)); logParameterList.Add(new CommandParameter("@visitorOpenId", visitorOpenId)); //同一个访问者扫了多少次 int sameVisitorCount = 0; _campaignManager.DataBase.ExecuteScalar <int>( "SELECT Count(1) FROM [Campaign_MemberQRCodeLandingLog] WHERE [CampaignId] = @campaignId AND [QRCodeOwnMember] = @qrCodeOwnMember AND [VisitorOpenId] = @visitorOpenId", logParameterList, (scalarValue) => { sameVisitorCount = scalarValue; }); #region 奖励积分 if (campaignBundle.MemberQRCode.LandingPoint > 0 && sameVisitorCount == 0) { //奖励积分 PointTrackArgs args = new PointTrackArgs(); args.DomainId = campaignBundle.Campaign.Domain; args.MemberId = qrCodeOwnMemberId; args.Quantity = campaignBundle.MemberQRCode.LandingPoint; args.Type = MemberPointTrackType.Campaign; args.TagName = campaignBundle.Campaign.Name; args.TagId = campaignId; _campaignManager.MemberManager.PointTrack(args); } #endregion #region 计数 //LandingCount 直接+1 LandingPersonCount 要判断人员是否重复 //查询已经有多少人扫过 List <CommandParameter> parameterList = new List <CommandParameter>(); parameterList.Add(new CommandParameter("@campaignId", campaignId)); parameterList.Add(new CommandParameter("@qrCodeOwnMember", qrCodeOwnMemberId)); if (sameVisitorCount == 0) { _campaignManager.DataBase.ExecuteNonQuery( "UPDATE [Campaign_MemberQRCodeItem] SET [LandingCount] = [LandingCount] + 1,[LandingPersonCount] = [LandingPersonCount] + 1 WHERE [CampaignId] = @campaignId AND [Member] = @qrCodeOwnMember ", parameterList); } else { _campaignManager.DataBase.ExecuteNonQuery( "UPDATE [Campaign_MemberQRCodeItem] SET [LandingCount] = [LandingCount] + 1 WHERE [CampaignId] = @campaignId AND [Member] = @qrCodeOwnMember ", parameterList); } #endregion //记录落地日志 Campaign_MemberQRCodeLandingLogEntity log = new Campaign_MemberQRCodeLandingLogEntity(); log.CampaignId = campaignId; log.Domain = campaignBundle.Campaign.Domain; log.QRCodeOwnMember = qrCodeOwnMemberId; log.VisitorOpenId = visitorOpenId; log.LandingTime = DateTime.Now; _campaignManager.DataBase.Insert(log); return(campaignBundle.MemberQRCode.LandingUrl); }