Beispiel #1
0
        /// <summary>
        /// 获取微信统一凭证接口
        /// </summary>
        /// <returns></returns>
        public string GetAccessToken(string pRequest)
        {
            var rp = pRequest.DeserializeJSONTo <APIRequest <EmptyRequestParameter> >();
            var loggingSessionInfo = Default.GetBSLoggingSession(rp.CustomerID, rp.UserID);
            var appService         = new WApplicationInterfaceBLL(loggingSessionInfo);


            var appEntity = appService.QueryByEntity(new WApplicationInterfaceEntity()
            {
                CustomerId = rp.CustomerID
            }, null)[0];

            var tempAccessToke = new CommonBLL().GetAccessTokenByCache(appEntity.AppID, appEntity.AppSecret, loggingSessionInfo);

            //重新取一次
            appEntity = appService.QueryByEntity(new WApplicationInterfaceEntity()
            {
                CustomerId = rp.CustomerID
            }, null)[0];

            WxAccessToken accessToken = new WxAccessToken()
            {
                access_token   = tempAccessToke.access_token,//appEntity.RequestToken,
                expires_in     = tempAccessToke.expires_in,
                ExpirationTime = appEntity.ExpirationTime.ToString()
            };

            return(new SuccessResponse <IAPIResponseData>(accessToken).ToJSON());
        }
Beispiel #2
0
        /// <summary>
        /// 获取jsapi_ticket
        /// </summary>
        /// <returns></returns>
        public string getJsApiConfig(string pRequest)
        {
            var rp = pRequest.DeserializeJSONTo <APIRequest <WeiXinConfigRq> >();

            if (string.IsNullOrEmpty(rp.OpenID))//OpenID为空立刻返回空数据,让前端跳转高级auth认证
            {
                return(new SuccessResponse <IAPIResponseData>(new XeiXinJsApiConfig()).ToJSON());
            }
            var loggingSessionInfo = Default.GetBSLoggingSession(rp.CustomerID, "1");
            var appService         = new WApplicationInterfaceBLL(loggingSessionInfo);
            var wxUserInfoBLL      = new WXUserInfoBLL(loggingSessionInfo);
            var vipService         = new VipBLL(loggingSessionInfo);
            var appEntity          = new WApplicationInterfaceEntity();

            var vipEntitys = vipService.QueryByEntity(new VipEntity {
                WeiXinUserId = rp.OpenID, ClientID = loggingSessionInfo.ClientID
            }, null);

            if (vipEntitys != null && vipEntitys.Length > 0)
            {
                appEntity = appService.QueryByEntity(new WApplicationInterfaceEntity()
                {
                    WeiXinID = vipEntitys[0].WeiXin, CustomerId = rp.CustomerID
                }, null).FirstOrDefault();
            }
            else
            {
                //优先从支持多号运营的表中取
                var wxUserInfo = wxUserInfoBLL.QueryByEntity(new WXUserInfoEntity()
                {
                    CustomerID = loggingSessionInfo.ClientID, WeiXinUserID = rp.OpenID
                }, null).FirstOrDefault();
                if (wxUserInfo != null)
                {
                    appEntity = appService.QueryByEntity(new WApplicationInterfaceEntity()
                    {
                        WeiXinID = wxUserInfo.WeiXin, CustomerId = rp.CustomerID
                    }, null).FirstOrDefault();
                }
            }
            //返回空数据,让前端跳转高级auth认证
            if (string.IsNullOrEmpty(appEntity.AppID))
            {
                return(new SuccessResponse <IAPIResponseData>(new XeiXinJsApiConfig()).ToJSON());
            }
            string            timestamp = ((long)((DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds)).ToString();
            string            nonceStr  = Guid.NewGuid().ToString("N").Substring(0, 16);
            XeiXinJsApiConfig config    = new XeiXinJsApiConfig()
            {
                debug     = rp.Parameters.debug,
                appId     = appEntity.AppID,
                timestamp = timestamp,
                nonceStr  = nonceStr,
                signature = this.getJsApiSignature(this.getJsApiTicket(rp.CustomerID, appEntity.AppID, appEntity.AppSecret), nonceStr, timestamp, rp.Parameters.url),
                jsApiList = new List <string>()
            };

            return(new SuccessResponse <IAPIResponseData>(config).ToJSON());
        }
        protected override GetModuleListRD ProcessRequest(DTO.Base.APIRequest <EmptyRequestParameter> pRequest)
        {
            var rd = new GetModuleListRD();
            var loggingSessionInfo              = new SessionManager().CurrentUserLoginInfo;
            WApplicationInterfaceBLL bllApp     = new WApplicationInterfaceBLL(loggingSessionInfo);
            T_UserGuideModulesBLL    bll        = new T_UserGuideModulesBLL(loggingSessionInfo);
            List <ModuleInfo>        moduleList = new List <ModuleInfo>();
            //是否绑定微信公众号
            var entityApp = bllApp.QueryByEntity(new WApplicationInterfaceEntity()
            {
                CustomerId = loggingSessionInfo.ClientID, IsDelete = 0
            }, null);

            if (entityApp.Count() > 0)
            {
                rd.IsBindWeChat = 1;
            }
            ///新手引导大模块
            var entity = bll.QueryByEntity(new T_UserGuideModulesEntity()
            {
                ModuleStep = 0, IsDelete = 0
            }, null);
            IEnumerable <ModuleInfo> ModuleList = from e in entity
                                                  select new ModuleInfo()
            {
                ModuleName         = e.ModuleName,
                ModuleCode         = e.ModuleCode,
                UserGuideModulesId = e.UserGuideModulesId.ToString(),
                ParentModule       = e.ParentModule.ToString(),
                Url      = e.Url,
                VideoUrl = e.VideoUrl,
                //ImageUrl1=e.ImageUrl1,
                //ImageUrl2=e.ImageUrl2,
                //ImageUrl3=e.ImageUrl3
            };
            ///每个用户最后一次的记录,已经模块是否完成
            T_UserGuideAccessLogBLL bllUserGuideLog = new T_UserGuideAccessLogBLL(loggingSessionInfo);
            var LogList = bllUserGuideLog.QueryByEntity(new Entity.T_UserGuideAccessLogEntity()
            {
                CustomerId = loggingSessionInfo.ClientID, UserId = loggingSessionInfo.CurrentLoggingManager.User_Id, IsDelete = 0
            }, null);

            foreach (var m in ModuleList)
            {
                foreach (var log in LogList)
                {
                    if (m.UserGuideModulesId == log.UserGuideModulesId.ToString())
                    {
                        m.LastStep       = (int)log.LastAccessStep;
                        m.LastUrl        = log.Url;
                        m.FinishedStatus = (int)log.FinishedStatus;
                    }
                }
                moduleList.Add(m);
            }
            rd.ModuleInfoList = moduleList;

            return(rd);
        }
        /// <summary>
        /// 取消授权
        /// </summary>
        /// <param name="appid"></param>
        /// <param name="clientid"></param>
        /// <returns></returns>
        public static bool UnauthWechatApp(string appid)
        {
            var clientId           = "eb17cc2569c74ab7888b1f403972d37d";//测试用
            var loggingSessionInfo = Default.GetBSLoggingSession(clientId, "open");
            var waiBll             = new WApplicationInterfaceBLL(loggingSessionInfo);
            var wmenuBll           = new WMenuBLL(loggingSessionInfo);
            var userInfo           = loggingSessionInfo;

            userInfo.CurrentLoggingManager.Connection_String = WebConfigurationManager.AppSettings["APConn"];
            var customerWxMappingBll = new TCustomerWeiXinMappingBLL(userInfo);
            var customerId           = customerWxMappingBll.GetCustomerIdByAppId(appid);
            var waiEntitys           = new WApplicationInterfaceEntity[] { };
            var waiEntity            = new WApplicationInterfaceEntity();
            var component_Appid      = WebConfigurationManager.AppSettings["Component_Appid"];

            waiEntitys = waiBll.QueryByEntity(new WApplicationInterfaceEntity {
                AppID = appid, OpenOAuthAppid = component_Appid, CustomerId = customerId, IsDelete = 0
            }, null);
            if (waiEntitys != null && waiEntitys.Length > 0)
            {
                waiEntity = waiEntitys.FirstOrDefault();
                //waiEntity.OpenOAuthAppid = null;//置空
                //waiBll.Update(waiEntity);
                waiBll.Delete(waiEntity);



                //查询参数
                List <IWhereCondition> complexCondition = new List <IWhereCondition> {
                };
                complexCondition.Add(new EqualsCondition()
                {
                    FieldName = "WeiXinID", Value = waiEntity.WeiXinID
                });
                var tempList = wmenuBll.PagedQuery(complexCondition.ToArray(), null, 10, 1);
                if (tempList.Entities.Length > 0)
                {
                    foreach (var item in tempList.Entities)
                    {
                        wmenuBll.Delete(item);
                    }
                }

                //var wmenuEntitys = wmenuBll.QueryByEntity(new WMenuEntity { WeiXinID = waiEntity.WeiXinID }, null);
                //if (wmenuEntitys != null && wmenuEntitys.Length > 0)
                //{
                //    foreach (var item in wmenuEntitys)
                //    {
                //        wmenuBll.Delete(item);
                //    }
                //}
            }
            return(true);
        }
Beispiel #5
0
        public void ReplyImage(string ImageId)
        {
            var wMaterialImageBll    = new WMaterialImageBLL(requestParams.LoggingSessionInfo);
            var wMaterialImageEntity = wMaterialImageBll.GetByID(ImageId);

            var commonService = new CommonBLL();
            var appService    = new WApplicationInterfaceBLL(requestParams.LoggingSessionInfo);
            var appEntity     = appService.QueryByEntity(new WApplicationInterfaceEntity()
            {
                WeiXinID = requestParams.WeixinId
            }, null).FirstOrDefault();
            var accessToken = commonService.GetAccessTokenByCache(appEntity.AppID, appEntity.AppSecret, requestParams.LoggingSessionInfo);

            UploadMediaEntity media = commonService.UploadMediaFile(accessToken.access_token, wMaterialImageEntity.ImageUrl, MediaType.Image);

            commonService.ResponseImageMessage(requestParams.WeixinId, requestParams.OpenId, media.media_id, httpContext, requestParams);
        }
        /// <summary>
        /// 获取列表
        /// </summary>
        public string GetListData()
        {
            var service = new WApplicationInterfaceBLL(new SessionManager().CurrentUserLoginInfo);
            IList <WApplicationInterfaceEntity> data = new List <WApplicationInterfaceEntity>();
            string content = string.Empty;

            data = service.QueryByEntity(new WApplicationInterfaceEntity
            {
                CustomerId = new SessionManager().CurrentUserLoginInfo.CurrentUser.customer_id
            }, null);
            //data = service.GetAll().ToList();

            var jsonData = new JsonData();

            jsonData.totalCount = data.Count.ToString();
            jsonData.data       = data;

            content = jsonData.ToJSON();
            return(content);
        }
        /// <summary>
        /// 获取列表
        /// </summary>
        public string GetListData()
        {
            var service = new WModelBLL(new SessionManager().CurrentUserLoginInfo);
            var wApplicationInterfaceBLL = new WApplicationInterfaceBLL(new SessionManager().CurrentUserLoginInfo);
            IList <WModelEntity> data    = new List <WModelEntity>();
            string content = string.Empty;

            string key = "";

            if (Request("pid") != null && Request("pid") != string.Empty)
            {
                key = Request("pid").ToString().Trim();
            }
            string type = "";

            if (Request("type") != null && Request("type") != string.Empty)
            {
                type = Request("type").ToString().Trim();
            }
            if (type == "2")
            {
                var appList = wApplicationInterfaceBLL.QueryByEntity(new WApplicationInterfaceEntity()
                {
                    WeiXinID = key
                }, null);
                if (appList != null && appList.Length > 0)
                {
                    key = appList[0].ApplicationId;
                }
            }
            data = service.GetWModelListByAppId(key);

            var jsonData = new JsonData();

            jsonData.totalCount = data.Count.ToString();
            jsonData.data       = data;

            content = jsonData.ToJSON();
            return(content);
        }
Beispiel #8
0
        /// <summary>
        /// 保存微信信息
        /// </summary>
        /// <param name="pwai"></param>
        /// <param name="paui"></param>
        /// <param name="clientId"></param>
        /// <returns></returns>
        public static bool SetWechatApp(QueryAuthResult pwai, GetAuthorizerInfoResult paui, string clientId)
        {
            #region 保存到微信信息表里
            //var clientId = "eb17cc2569c74ab7888b1f403972d37d";//测试用
            var loggingSessionInfo = Default.GetBSLoggingSession(clientId, "open");
            var waiBll             = new WApplicationInterfaceBLL(loggingSessionInfo);
            var waiEntitys         = new WApplicationInterfaceEntity[] { };
            var waiEntity          = new WApplicationInterfaceEntity();

            //去除之前授权的记录
            //查询参数
            List <IWhereCondition> complexCondition = new List <IWhereCondition> {
            };
            complexCondition.Add(new EqualsCondition()
            {
                FieldName = "AppID", Value = pwai.authorization_info.authorizer_appid
            });
            complexCondition.Add(new DirectCondition(" CustomerId != '" + clientId + "'"));
            complexCondition.Add(new EqualsCondition()
            {
                FieldName = "OpenOAuthAppid", Value = WebConfigurationManager.AppSettings["Component_Appid"]
            });
            var tempList = waiBll.PagedQuery(complexCondition.ToArray(), null, 10, 1);
            if (tempList.Entities.Length > 0)
            {
                foreach (var item in tempList.Entities)
                {
                    waiBll.Delete(item);
                }
            }

            var prevWaiEntitys = waiBll.QueryByEntity(new WApplicationInterfaceEntity {
                AppID = pwai.authorization_info.authorizer_appid, CustomerId = clientId, IsDelete = 0, OpenOAuthAppid = WebConfigurationManager.AppSettings["Component_Appid"]
            }, null);


            waiEntitys = waiBll.QueryByEntity(new WApplicationInterfaceEntity {
                AppID = pwai.authorization_info.authorizer_appid, CustomerId = clientId, IsDelete = 0
            }, null);
            if (waiEntitys != null && waiEntitys.Length > 0)
            {
                waiEntity       = waiEntitys.FirstOrDefault();
                waiEntity.URL   = Config.URL;
                waiEntity.Token = "jitmarketing";//老代码写死token//Config.ServerToken;
                //waiEntity.Token = "zmindclouds";//老代码写死token//Config.ServerToken,
                //waiEntity.AppID = "wx691c2f2bbac04b4b";
                //waiEntity.AppSecret = "0c79e1fa963cd80cc0be99b20a18faeb";
                //waiEntity.PrevEncodingAESKey = "F3Rd5xvdCqUsL5FFwhS1vSIqTRFoNpRcWhyGrOjQhAK";
                //waiEntity.CurrentEncodingAESKey = "F3Rd5xvdCqUsL5FFwhS1vSIqTRFoNpRcWhyGrOjQhAK";
                waiEntity.ServerIP     = Config.ServerIP;
                waiEntity.AuthUrl      = Config.AuthUrl;
                waiEntity.RequestToken = pwai != null ? pwai.authorization_info.authorizer_access_token : string.Empty;
                //waiEntity.RefreshToken = pwai != null ? pwai.authorization_info.authorizer_refresh_token : string.Empty,//刷新token
                waiEntity.ExpirationTime = DateTime.Now.AddSeconds(7000);//默认7200,提前200秒过期
                waiEntity.IsMoreCS       = 1;
                waiEntity.OpenOAuthAppid = WebConfigurationManager.AppSettings["Component_Appid"];
                waiBll.Update(waiEntity);
                //提交管理平台
                waiBll.setCposApMapping(waiEntity);
            }
            else
            {
                if (pwai != null && paui != null)
                {
                }
                var weixinTypeId = "3";//服务号
                switch (paui.authorizer_info.service_type_info.id.ToString())
                {
                case "0":
                    weixinTypeId = "1";    //订阅号
                    break;

                case "1":
                    weixinTypeId = "2";    //订阅号
                    break;
                }
                waiEntity = new WApplicationInterfaceEntity()
                {
                    ApplicationId = Guid.NewGuid().ToString("N"),
                    WeiXinName    = paui != null ? paui.authorizer_info.nick_name : string.Empty,
                    WeiXinID      = paui != null ? paui.authorizer_info.user_name : string.Empty,
                    URL           = Config.URL,
                    Token         = "jitmarketing", //老代码写死token//Config.ServerToken,
                    AppID         = pwai != null ? pwai.authorization_info.authorizer_appid : string.Empty,
                    AppSecret     = string.Empty,   //空

                    //Token = "zmindclouds",//老代码写死token//Config.ServerToken,
                    //AppID = "wx691c2f2bbac04b4b",
                    //AppSecret = "0c79e1fa963cd80cc0be99b20a18faeb",//空
                    //PrevEncodingAESKey = "F3Rd5xvdCqUsL5FFwhS1vSIqTRFoNpRcWhyGrOjQhAK",
                    //CurrentEncodingAESKey = "F3Rd5xvdCqUsL5FFwhS1vSIqTRFoNpRcWhyGrOjQhAK",

                    ServerIP     = Config.ServerIP,
                    WeiXinTypeId = weixinTypeId,// paui != null ? paui.authorizer_info.service_type_info.id.ToString() : "3",
                    AuthUrl      = Config.AuthUrl,
                    RequestToken = pwai != null ? pwai.authorization_info.authorizer_access_token : string.Empty,
                    //RefreshToken = pwai != null ? pwai.authorization_info.authorizer_refresh_token : string.Empty,//刷新token
                    ExpirationTime = DateTime.Now.AddSeconds(7000),                          //默认7200,提前200秒过期
                    IsHeight       = 1,                                                      //1=高级帐号
                    IsMoreCS       = 1,
                    OpenOAuthAppid = WebConfigurationManager.AppSettings["Component_Appid"], // component_AppId;
                    CustomerId     = clientId
                };
                waiBll.Create(waiEntity);

                //提交微信初级菜单
                waiBll.setCreateWXMenu(waiEntity);
                //提交管理平台
                waiBll.setCposApMapping(waiEntity);
            }

            #endregion

            return(true);
        }
        //响应微信平台推送消息
        private void ResponseMsg(HttpContext httpContext, RequestParams requestParams)
        {
            BaseBLL  weixin  = null;
            IFactory factory = null;

            #region 通过微信类型生成对应的业务处理类

            var application = new WApplicationInterfaceBLL(requestParams.LoggingSessionInfo);
            var appEntitys  = application.QueryByEntity(new WApplicationInterfaceEntity()
            {
                WeiXinID = requestParams.WeixinId
            }, null);

            if (appEntitys != null && appEntitys.Length > 0)
            {
                var entity = appEntitys.FirstOrDefault();
                BaseService.WriteLogWeixin("通过微信类型生成对应的业务处理类");
                BaseService.WriteLogWeixin("WeiXinTypeId(微信类型):  " + entity.WeiXinTypeId);

                switch (entity.WeiXinTypeId)
                {
                case WeiXinType.SUBSCRIPTION:
                    factory = new SubscriptionFactory();
                    weixin  = factory.CreateWeiXin(httpContext, requestParams);
                    BaseService.WriteLogWeixin("订阅号");
                    break;

                case WeiXinType.SERVICE:
                    factory = new ServiceFactory();
                    weixin  = factory.CreateWeiXin(httpContext, requestParams);
                    BaseService.WriteLogWeixin("服务号");
                    break;

                case WeiXinType.CERTIFICATION:        //目前我们的客户一般是认证服务号,所以关注事件从这里查看
                    factory = new CertificationFactory();
                    weixin  = factory.CreateWeiXin(httpContext, requestParams);
                    BaseService.WriteLogWeixin("认证服务号");
                    break;

                case WeiXinType.SUBSCRIPTION_EXTEND:
                    BaseService.WriteLogWeixin("可扩展订阅号");
                    break;

                case WeiXinType.SERVICE_EXTEND:
                    BaseService.WriteLogWeixin("可扩展服务号");
                    break;

                case WeiXinType.CERTIFICATION_EXTEND:
                    BaseService.WriteLogWeixin("可扩展认证服务号");
                    break;

                default:
                    factory = new SubscriptionFactory();
                    weixin  = factory.CreateWeiXin(httpContext, requestParams);
                    BaseService.WriteLogWeixin("默认订阅号");
                    break;
                }
            }

            #endregion

            weixin.ResponseMsg();//根据消息类型,回应事件。有文本消息、图片消息、多客服、地理位置、事件
        }
Beispiel #10
0
        protected override DownloadQRCodeRD ProcessRequest(DTO.Base.APIRequest <DownloadQRCodeRP> pRequest)
        {
            string content    = string.Empty;
            string customerId = string.Empty;
            var    RD         = new DownloadQRCodeRD();

            try
            {
                #region 解析传入参数
                //解析请求字符串
                var RP = pRequest.Parameters;

                //判断客户ID是否传递

                customerId = CurrentUserInfo.CurrentUser.customer_id;


                #endregion
                var    imageUrl = string.Empty;
                Random ro       = new Random();
                var    iUp      = 100000000;
                var    iDown    = 50000000;

                if (string.IsNullOrEmpty(RP.VipDCode.ToString()) || RP.VipDCode == 0)
                {
                    throw new APIException("VipDCode参数不能为空");
                }
                var rpVipDCode = 0;                   //临时二维码
                var iResult    = ro.Next(iDown, iUp); //随机数

                if (RP.VipDCode == 9)                 //永久二维码
                {
                    var userQRCodeBll  = new WQRCodeManagerBLL(CurrentUserInfo);
                    var marketEventBll = new MarketEventBLL(CurrentUserInfo);

                    var marketEventEntity = marketEventBll.QueryByEntity(new MarketEventEntity()
                    {
                        EventCode = "CA00002433", CustomerId = CurrentUserInfo.ClientID
                    }, null).FirstOrDefault();
                    var userQRCode = userQRCodeBll.QueryByEntity(new WQRCodeManagerEntity()
                    {
                        ObjectId = marketEventEntity.MarketEventID, CustomerId = CurrentUserInfo.ClientID
                    }, null);                                                                                                                                                              //

                    if (userQRCode != null && userQRCode.Length > 0)
                    {
                        RD.imageUrl = userQRCode[0].ImageUrl;
                        return(RD);
                    }

                    //获取当前二维码 最大值
                    iResult    = new WQRCodeManagerBLL(CurrentUserInfo).GetMaxWQRCod() + 1;
                    rpVipDCode = 1;                 //永久

                    #region 获取微信帐号
                    //门店关联的公众号
                    var tueBll    = new TUnitExpandBLL(CurrentUserInfo);
                    var tueEntity = new TUnitExpandEntity();
                    if (!string.IsNullOrEmpty(CurrentUserInfo.CurrentUserRole.UnitId))
                    {
                        tueEntity = tueBll.QueryByEntity(new TUnitExpandEntity()
                        {
                            UnitId = CurrentUserInfo.CurrentUserRole.UnitId
                        }, null).FirstOrDefault();
                    }

                    var server = new WApplicationInterfaceBLL(CurrentUserInfo);
                    var wxObj  = new WApplicationInterfaceEntity();
                    if (tueEntity != null && !string.IsNullOrEmpty(tueEntity.Field1))
                    {
                        wxObj = server.QueryByEntity(new WApplicationInterfaceEntity {
                            AppID = tueEntity.Field1, CustomerId = customerId
                        }, null).FirstOrDefault();
                    }
                    else
                    {
                        wxObj = server.QueryByEntity(new WApplicationInterfaceEntity {
                            CustomerId = customerId
                        }, null).FirstOrDefault();
                    }

                    if (wxObj == null)
                    {
                        throw new APIException("没有对应公众号");
                    }
                    else
                    {
                        var commonServer = new CommonBLL();

                        imageUrl = commonServer.GetQrcodeUrl(wxObj.AppID
                                                             , wxObj.AppSecret
                                                             , rpVipDCode.ToString("")    //二维码类型  0: 临时二维码  1:永久二维码
                                                             , iResult, CurrentUserInfo); //iResult作为场景值ID,临时二维码时为32位整型,永久二维码时只支持1--100000
                        if (imageUrl != null && !imageUrl.Equals(""))
                        {
                            CPOS.Common.DownloadImage downloadServer = new DownloadImage();
                            string downloadImageUrl = ConfigurationManager.AppSettings["website_WWW"];
                            imageUrl = downloadServer.DownloadFile(imageUrl, downloadImageUrl);
                            //如果名称不为空,就把图片放在一定的背景下面
                            //if (!string.IsNullOrEmpty(RP.Parameters.RetailTraderName))
                            //{
                            //    string apiDomain = ConfigurationManager.AppSettings["website_url"];

                            //    imageUrl = CombinImage(apiDomain + @"/HeadImage/qrcodeBack.jpg", imageUrl, RP.Parameters.RetailTraderName + "合作二维码");
                            //}
                        }
                    }

                    #endregion

                    if (!string.IsNullOrEmpty(imageUrl))    //永久二维码
                    {
                        #region 创建店员永久二维码匹配表
                        var userQrTypeBll = new WQRCodeTypeBLL(CurrentUserInfo);
                        var userQrType    = userQrTypeBll.QueryByEntity(new WQRCodeTypeEntity()
                        {
                            TypeName = "签到"
                        }, null);                                                                                       //"UserQrCode"
                        if (userQrType != null && userQrType.Length > 0)
                        {
                            var userQrCodeBll = new WQRCodeManagerBLL(CurrentUserInfo);
                            var userQrCode    = new WQRCodeManagerEntity();
                            userQrCode.QRCode        = iResult.ToString();//记录传过去的二维码场景值
                            userQrCode.QRCodeTypeId  = userQrType[0].QRCodeTypeId;
                            userQrCode.IsUse         = 1;
                            userQrCode.CustomerId    = CurrentUserInfo.CurrentUser.customer_id;
                            userQrCode.ImageUrl      = imageUrl;
                            userQrCode.ApplicationId = wxObj.ApplicationId;
                            //objectId 为店员ID
                            userQrCode.ObjectId = marketEventEntity.MarketEventID;
                            userQrCodeBll.Create(userQrCode);
                        }
                        #endregion
                    }
                }

                RD.imageUrl = imageUrl;
            }
            catch
            {
                throw new APIException("生成二维码错误");
            }
            return(RD);
        }
Beispiel #11
0
        public HttpResponseMessage QRCode(string UnitId, string ObjectID)
        {
            Loggers.Debug(new DebugLogInfo()
            {
                Message = $"[api/Vip/QRCode]接口,参数:\"UnitId:{UnitId}&ObjectID:{ObjectID}\""
            });
            try
            {
                string customerId         = ConfigurationManager.AppSettings["CustomerId"].Trim();
                var    loggingSessionInfo = Default.GetLoggingSession(customerId, ObjectID);
                loggingSessionInfo.Conn = ConfigurationManager.AppSettings["Conn"].Trim();

                var    imageUrl = string.Empty;
                Random ro       = new Random();
                var    iUp      = 100000000;
                var    iDown    = 50000000;


                var rpVipDCode = 0;                   //临时二维码
                var iResult    = ro.Next(iDown, iUp); //随机数

                string objectid = ObjectID;

                #region 获取微信帐号

                //门店关联的公众号
                var tuBll    = new t_unitBLL(loggingSessionInfo);
                var tuEntity = new t_unitEntity();
                if (!string.IsNullOrEmpty(UnitId))
                {
                    tuEntity =
                        tuBll.QueryByEntity(new t_unitEntity()
                    {
                        unit_id = UnitId
                    }, null)
                        .FirstOrDefault();
                }

                var server = new WApplicationInterfaceBLL(loggingSessionInfo);
                var wxObj  = new WApplicationInterfaceEntity();
                if (tuEntity != null && !string.IsNullOrEmpty(tuEntity.weiXinId))
                {
                    wxObj =
                        server.QueryByEntity(
                            new WApplicationInterfaceEntity {
                        WeiXinID = tuEntity.weiXinId, CustomerId = customerId
                    },
                            null).FirstOrDefault();
                }
                else
                {
                    wxObj =
                        server.QueryByEntity(new WApplicationInterfaceEntity {
                        CustomerId = customerId
                    }, null)
                        .FirstOrDefault();
                }

                if (wxObj == null)
                {
                    throw new APIException("不存在对应的微信帐号")
                          {
                              ErrorCode = 302
                          };
                }
                else
                {
                    var commonServer = new CommonBLL();

                    imageUrl = commonServer.GetQrcodeUrl(wxObj.AppID
                                                         , wxObj.AppSecret
                                                         , rpVipDCode.ToString("")       //二维码类型  0: 临时二维码  1:永久二维码
                                                         , iResult, loggingSessionInfo); //iResult作为场景值ID,临时二维码时为32位整型,永久二维码时只支持1--100000
                    //"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQGN7zoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL1dreENCS1htX0xxQk94SEJ6MktIAAIEUk88VwMECAcAAA==";
                    //"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQGN7zoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL1dreENCS1htX0xxQk94SEJ6MktIAAIEUk88VwMECAcAAA==";
                    if (imageUrl != null && !imageUrl.Equals(""))
                    {
                        DownloadImage downloadServer   = new DownloadImage();
                        string        downloadImageUrl = ConfigurationManager.AppSettings["website_WWW"];
                        imageUrl = downloadServer.DownloadFile(imageUrl, downloadImageUrl);
                    }
                }

                #endregion


                #region 创建临时匹配表

                VipDCodeBLL    vipDCodeServer = new VipDCodeBLL(loggingSessionInfo);
                VipDCodeEntity info           = new VipDCodeEntity();
                info.DCodeId              = iResult.ToString(); //记录传过去的二维码场景值****(保存到数据库时没加空格)
                info.CustomerId           = customerId;
                info.UnitId               = UnitId;             //获取会集店
                info.Status               = "0";
                info.IsReturn             = 0;
                info.DCodeType            = 2; // add by donal 2014-9-22 10:02:08
                loggingSessionInfo.UserID = ObjectID;
                info.CreateBy             = ObjectID;
                info.ImageUrl             = imageUrl;
                //info.VipId = RP.UserID;
                info.ObjectId = ObjectID; //分享经销商的vipid
                vipDCodeServer.Create(info);

                #endregion


                var model = new QRCodeResponseModel()
                {
                    IsSucess = true,
                    ImageUrl = imageUrl,
                    paraTmp  = iResult.ToString().Insert(4, " ")
                };

                Loggers.Debug(new DebugLogInfo()
                {
                    Message = $"setSignUp content: {model}"
                });


                return(Request.CreateResponse(HttpStatusCode.OK, model));
            }
            catch (Exception ex)
            {
                var model = new QRCodeResponseModel()
                {
                    IsSucess     = false,
                    ErrorMessage = string.Format("获取二维码出错:{0}", ex.Message)
                };
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("获取二维码出错:{0}", ex.Message)
                });
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, model));
            }
        }
Beispiel #12
0
        protected override GetMenuListRD ProcessRequest(DTO.Base.APIRequest <GetMenuListRP> pRequest)
        {
            var rd = new GetMenuListRD();

            string applicationId = pRequest.Parameters.ApplicationId;
            string customerId    = this.CurrentUserInfo.ClientID;

            var bll = new WMenuBLL(this.CurrentUserInfo);

            var wappBll = new WApplicationInterfaceBLL(CurrentUserInfo);

            var wappEntity = wappBll.QueryByEntity(new WApplicationInterfaceEntity()
            {
                ApplicationId = applicationId
            }, null);

            if (wappEntity.Length == 0 || wappEntity.Any() == false)
            {
                throw new APIException("该微信公众号无效")
                      {
                          ErrorCode = 120
                      };
            }
            var weixinId = wappEntity[0].WeiXinID;


            var ds = bll.GetMenuList(customerId, applicationId);

            if (ds.Tables[0].Rows.Count == 0)
            {
                rd.MenuList = null;
            }
            else
            {
                string menuList =
                    ds.Tables[0].AsEnumerable().Aggregate("", (x, j) =>
                {
                    x += string.Format("'{0}',", j["ID"].ToString());
                    return(x);
                }).Trim(',');

                #region 根据菜单ID从图文映射表里面关联到图文表里面数据

                //  var textDs = bll.GetMenuTextIdList(customerId, weixinId, menuList);

                #endregion

                var temp =
                    ds.Tables[0].AsEnumerable()
                    .Where(t => t["level"].ToString() == "1")     //先取第一层
                    .OrderBy(t => t["Status"].ToString())
                    .OrderBy(t => Convert.ToInt32(t["DisplayColumn"]))
                    .Select(t => new MenuInfo
                {
                    MenuId        = t["ID"].ToString(),
                    WeiXinId      = t["WeiXinID"].ToString(),
                    ApplicationId = applicationId,
                    Name          = t["Name"].ToString(),
                    DisplayColumn = Convert.ToInt32(t["DisplayColumn"]),
                    Level         = Convert.ToInt32(t["Level"]),
                    ParentId      = t["ParentId"].ToString(),
                    Status        = Convert.ToInt32(t["Status"]),
                    SubMenus      =
                        ds.Tables[0].AsEnumerable()
                        .Where(
                            tt =>
                            tt["ParentId"].ToString() == t["ID"].ToString() &&
                            tt["level"].ToString() == "2")                //子菜单里取第二层
                        .OrderBy(tt => tt["Status"].ToString())
                        .OrderBy(tt => Convert.ToInt32(tt["DisplayColumn"]))
                        .Select(tt => new MenuChildInfo
                    {
                        MenuId        = tt["ID"].ToString(),
                        WeiXinId      = tt["WeiXinID"].ToString(),
                        ApplicationId = applicationId,
                        Name          = tt["Name"].ToString(),
                        DisplayColumn = Convert.ToInt32(tt["DisplayColumn"]),
                        Level         = Convert.ToInt32(tt["Level"]),
                        ParentId      = tt["ParentId"].ToString(),
                        Status        = Convert.ToInt32(tt["Status"]),
                    }).ToArray()
                });
                rd.MenuList = temp.ToArray();
            }
            return(rd);
        }
Beispiel #13
0
        /// <summary>
        /// 获取门店二维码
        /// </summary>
        /// <returns></returns>
        public string SetUnitWXCode()
        {
            #region 参数处理
            string WeiXinId     = Request("WeiXinId");
            string UnitId       = Request("UnitId");
            string WXCode       = Request("WXCode");
            var    responseData = new ResponseData();
            if (WeiXinId == null || WeiXinId.Trim().Length == 0)
            {
                responseData.success = false;
                responseData.msg     = "公众号不能为空";
                return(responseData.ToJSON());
            }

            //if (UnitId == null || UnitId.Trim().Length == 0)
            //{
            //    responseData.success = false;
            //    responseData.msg = "门店标识不能为空";
            //    return responseData.ToJSON();
            //}
            //if (WXCode == null || WXCode.Equals(""))
            //{
            //    VwUnitPropertyBLL unitServer = new VwUnitPropertyBLL(CurrentUserInfo);
            //    WXCode = unitServer.GetUnitWXCode(UnitId).ToString();
            //}
            #endregion

            #region 获取微信公众号信息
            WApplicationInterfaceBLL server = new WApplicationInterfaceBLL(CurrentUserInfo);
            var wxObj = server.QueryByEntity(new WApplicationInterfaceEntity
            {
                CustomerId = CurrentUserInfo.CurrentUser.customer_id
                ,
                IsDelete = 0
                ,
                ApplicationId = WeiXinId
            }, null);
            if (wxObj == null || wxObj.Length == 0)
            {
                responseData.success = false;
                responseData.msg     = "不存在对应的微信帐号";
                return(responseData.ToJSON().ToString());
            }
            else
            {
                JIT.CPOS.BS.BLL.WX.CommonBLL commonServer = new JIT.CPOS.BS.BLL.WX.CommonBLL();
                string imageUrl = commonServer.GetQrcodeUrl(wxObj[0].AppID.ToString().Trim()
                                                            , wxObj[0].AppSecret.Trim()
                                                            , "1"
                                                            , Convert.ToInt32(WXCode), CurrentUserInfo);
                if (imageUrl != null && !imageUrl.Equals(""))
                {
                    string host = ConfigurationManager.AppSettings["DownloadImageUrl"];

                    try
                    {
                        CPOS.Common.DownloadImage downloadServer = new DownloadImage();
                        imageUrl             = downloadServer.DownloadFile(imageUrl, host);
                        responseData.success = true;
                        responseData.msg     = imageUrl;
                        responseData.status  = WXCode;
                    }
                    catch (Exception ex)
                    {
                        responseData.success = false;
                        responseData.data    = imageUrl;
                        responseData.msg     = ex.ToString();
                        return(responseData.ToJSON().ToString());
                    }
                    return(responseData.ToJSON().ToString());
                }
                else
                {
                    responseData.success = false;
                    responseData.msg     = "图片不存在";
                    return(responseData.ToJSON().ToString());
                }
            }
            #endregion
        }
Beispiel #14
0
        protected override SetMenuRD ProcessRequest(DTO.Base.APIRequest <SetMenuRP> pRequest)
        {
            var rd = new SetMenuRD();

            string menuId          = pRequest.Parameters.MenuId;
            string name            = pRequest.Parameters.Name;
            string parentId        = pRequest.Parameters.ParentId;
            string displayIndex    = pRequest.Parameters.DisplayColumn;
            int    status          = pRequest.Parameters.Status;
            string applicationId   = pRequest.Parameters.ApplicationId;//某个公众号在数据库里的标识
            string text            = pRequest.Parameters.Text;
            string menuUrl         = pRequest.Parameters.MenuUrl;
            string imageUrl        = pRequest.Parameters.ImageUrl;
            string messageType     = pRequest.Parameters.MessageType;
            int    unionTypeId     = pRequest.Parameters.UnionTypeId;
            Guid?  pageId          = pRequest.Parameters.PageId;
            string pageParamJson   = pRequest.Parameters.PageParamJson;
            var    materialTextIds = pRequest.Parameters.MaterialTextIds;
            string pageUrlJson     = pRequest.Parameters.PageUrlJson;

            int    level = pRequest.Parameters.Level;
            string type  = "";

            var bll = new WMenuBLL(this.CurrentUserInfo);

            #region  一级节点 节点名称长度不能超过3个汉字,二级节点 不能超过7个汉字

            #endregion

            #region type = view时,菜单链接MenuUrl不能为空

            #endregion

            #region 图文消息只能增加10条

            if (unionTypeId == 1 || unionTypeId == 3)
            {
                type = "view";
                if (unionTypeId == 1 && (string.IsNullOrEmpty(menuUrl) || menuUrl == ""))
                {
                    throw new APIException("菜单链接不能为空")
                          {
                              ErrorCode = 123
                          };
                }

                if (unionTypeId == 1 && (menuUrl.Length > 500))
                {
                    throw new APIException("菜单链接地址超长,请重新填写")
                          {
                              ErrorCode = 140
                          };
                }
            }
            else if (unionTypeId == 2)
            {
                type = "click";
                if (messageType == "3")
                {
                    if (materialTextIds == null || materialTextIds.Any() == false)
                    {
                        throw new APIException("图文消息不能为空")
                              {
                                  ErrorCode = 124
                              };
                    }
                    if (materialTextIds.Any() == true && materialTextIds.Length > 10)
                    {
                        throw new APIException("图文消息最大不能超过10条数据")
                              {
                                  ErrorCode = 125
                              };
                    }
                }

                if (messageType == "1")
                {
                    if (text == "" || string.IsNullOrEmpty(text))
                    {
                        throw new APIException("文本不能为空")
                              {
                                  ErrorCode = 126
                              };
                    }
                    if (Encoding.Default.GetBytes(text).Length > 2048)
                    {
                        throw new APIException("文本超过了最大限制(2M)")
                              {
                                  ErrorCode = 127
                              };
                    }
                }
                if (messageType == "2")
                {
                    if (imageUrl == "" || string.IsNullOrEmpty(imageUrl))
                    {
                        throw new APIException("图片不能为空")
                              {
                                  ErrorCode = 128
                              };
                    }
                }
            }

            #endregion


            #region 确保每个一级节点下面不能超过五个状态已启用的二级菜单

            if (level == 2)
            {
                int count = bll.GetLevel2CountByMenuId(parentId, applicationId, this.CurrentUserInfo.ClientID);

                if (count >= 5 && status == 1 && (menuId == "" || string.IsNullOrEmpty(menuId)))
                {
                    throw new APIException("二级节点的数量最大为5条启用的菜单")
                          {
                              ErrorCode = 120
                          };
                }
                if (!string.IsNullOrEmpty(menuId) && count >= 5)
                {
                    var ds = bll.GetMenuDetail(menuId);
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        var oldStatus = Convert.ToInt32(ds.Tables[0].Rows[0]["Status"]);
                        if (oldStatus == 0 && status == 1)   //如果已经目前已经有五个已经启用了,这个之前是没启用的,现在启用了
                        {
                            throw new APIException("二级节点的数量最大为5条启用的菜单")
                                  {
                                      ErrorCode = 130
                                  };
                        }
                    }
                }
                //取没被删除的,id
                int countDisplayCoulumn = bll.GetLevel2CountByDisplayColumn(parentId, menuId, int.Parse(displayIndex), applicationId, this.CurrentUserInfo.ClientID);
                if (countDisplayCoulumn > 0)
                {
                    throw new APIException("同一个一级菜单下的二级菜单,序号不能相同")
                          {
                              ErrorCode = 130
                          };
                }


                if (Encoding.Default.GetBytes(name).Length > 16)
                {
                    throw new APIException("二级节点的名称最多不能超过8个汉字")
                          {
                              ErrorCode = 121
                          };
                }

                //判断一级菜单的类型 如果一级菜单的类型为View改为Click

                var menuEntity = bll.QueryByEntity(new WMenuEntity()
                {
                    ID = parentId
                }, null).FirstOrDefault();

                if (menuEntity != null)
                {
                    if (menuEntity.Type == "view")
                    {
                        menuEntity.Type = "click";
                        bll.Update(menuEntity);
                    }
                }
            }
            else if (level == 1)
            {
                //判断是否有二级菜单

                var b = bll.CheckExistLevel2Menu(menuId);

                //有,type=Click

                if (b)
                {
                    type = "click";
                }

                //没有根据当前选择的点击关联到来判断Click或View
                else
                {
                    if (unionTypeId == 1 || unionTypeId == 3)
                    {
                        type = "view";
                    }
                    else if (unionTypeId == 2)
                    {
                        type = "click";
                    }
                }
                if (Encoding.Default.GetBytes(name).Length > 12)
                {
                    throw new APIException("一级节点的名称最多不能超过6个汉字")
                          {
                              ErrorCode = 122
                          };
                }
            }
            else
            {
                throw new APIException("菜单级别参数错误【Level】")
                      {
                          ErrorCode = 131
                      };
            }

            #endregion



            var    wappBll    = new WApplicationInterfaceBLL(CurrentUserInfo);
            string weixinId   = "";
            var    wappEntity = wappBll.QueryByEntity(new WApplicationInterfaceEntity()
            {
                CustomerId    = CurrentUserInfo.ClientID,
                ApplicationId = applicationId
            }, null);
            if (wappEntity.Length > 0)
            {
                weixinId = wappEntity[0].WeiXinID;
            }

            if (unionTypeId == 3)
            {
                var sysPageBll = new SysPageBLL(CurrentUserInfo);

                var pages = sysPageBll.GetPageByID(pageId);

                if (pages.Length > 0)
                {
                    var page = pages.FirstOrDefault();

                    if (page != null)
                    {
                        //获取生成的URL
                        menuUrl = page.GetUrl(pageParamJson, CurrentUserInfo.ClientID, applicationId, weixinId);
                    }
                    else
                    {
                        throw new APIException("缺少页面参数配置")
                              {
                                  ErrorCode = 141
                              };
                    }
                }
            }

            //上传图文素材
            //获取access_token/

            /**
             * var commonService = new CommonBLL();
             * var appService = new WApplicationInterfaceBLL(CurrentUserInfo);
             * var appEntity = appService.GetByID(applicationId);//
             * //var accessToken = commonService.GetAccessTokenByCache(appEntity.AppID, appEntity.AppSecret, CurrentUserInfo);
             * //UploadMediaEntity media = commonService.UploadMediaFileFOREVER(accessToken.access_token, imageUrl, MediaType.Image);
             * string filePath = commonService.DownloadFile(imageUrl);
             ***/
            var wMaterialImageBll    = new WMaterialImageBLL(CurrentUserInfo);
            var wMaterialImageEntity = new WMaterialImageEntity();
            var imageId = Utils.NewGuid();

            wMaterialImageEntity.ApplicationId = applicationId;
            wMaterialImageEntity.ImageUrl      = imageUrl;
            wMaterialImageEntity.ImageId       = imageId;
            // wMaterialImageEntity.ImageName = filePath;//存物理路径,用于在微信端发送图片
            wMaterialImageBll.Create(wMaterialImageEntity);



            var           entity = new WMenuEntity();
            WMenuEntity[] wMenuEntityArrayByName;
            if (level == 1)
            {
                var wMenuEntityArraybyIndex = bll.QueryByEntity(new WMenuEntity()
                {
                    DisplayColumn = displayIndex, WeiXinID = weixinId, Level = "1"
                }, null);
                if (wMenuEntityArraybyIndex.Length != 0 && wMenuEntityArraybyIndex[0].ID != menuId)
                {
                    throw new APIException("一级菜单序号不可重复")
                          {
                              ErrorCode = 143
                          };
                }
                wMenuEntityArrayByName = bll.QueryByEntity(new WMenuEntity()
                {
                    Name = name, WeiXinID = weixinId, Level = "1"
                }, null);
                if (string.IsNullOrEmpty(menuId) || menuId == "")
                {
                    if (wMenuEntityArrayByName.Length != 0)
                    {
                        throw new APIException("菜单名称不可重复")
                              {
                                  ErrorCode = 142
                              };
                    }
                }
                else if (wMenuEntityArrayByName.Length != 0 && wMenuEntityArrayByName[0].ID != menuId)
                {
                    throw new APIException("菜单名称不可重复")
                          {
                              ErrorCode = 142
                          };
                }
            }
            if (level == 2)
            {
                wMenuEntityArrayByName = bll.QueryByEntity(new WMenuEntity()
                {
                    Name = name, WeiXinID = weixinId, Level = "2"
                }, null);
                if (string.IsNullOrEmpty(menuId) || menuId == "")
                {
                    if (wMenuEntityArrayByName.Length != 0)
                    {
                        throw new APIException("菜单名称不可重复")
                              {
                                  ErrorCode = 142
                              };
                    }
                }
                else if (wMenuEntityArrayByName.Length != 0 && wMenuEntityArrayByName[0].ID != menuId)
                {
                    throw new APIException("菜单名称不可重复")
                          {
                              ErrorCode = 142
                          };
                }
            }
            if (string.IsNullOrEmpty(menuId) || menuId == "")
            {
                var newMenuId = Utils.NewGuid().ToString();
                entity.ID             = newMenuId;
                entity.Name           = name;
                entity.ParentId       = parentId;
                entity.DisplayColumn  = displayIndex;
                entity.ImageId        = imageId; //和图片做了关联
                entity.Status         = status;
                entity.Level          = level.ToString();
                entity.MenuURL        = menuUrl;
                entity.Key            = Utils.NewGuid().Substring(0, 7);
                entity.WeiXinID       = weixinId;
                entity.Type           = type;
                entity.PageId         = pageId;
                entity.BeLinkedType   = unionTypeId;
                entity.MaterialTypeId = messageType;
                entity.Text           = text;

                bll.Create(entity);
                rd.MenuId = newMenuId;
            }
            else
            {
                if (unionTypeId == 2)
                {
                    menuUrl = null;
                }

                entity.ID             = menuId;
                entity.Name           = name;
                entity.ParentId       = parentId;
                entity.DisplayColumn  = displayIndex;
                entity.ImageId        = imageId;
                entity.Status         = status;
                entity.MaterialTypeId = messageType;
                entity.MenuURL        = menuUrl;
                entity.Key            = Utils.NewGuid().Substring(0, 7);
                entity.Level          = level.ToString();
                entity.WeiXinID       = weixinId;
                entity.Type           = type;
                entity.PageId         = pageId;
                entity.Text           = text;
                entity.BeLinkedType   = unionTypeId;
                bll.Update(entity);

                rd.MenuId = menuId;
            }

            bll.UpdateMenuData(rd.MenuId, status, pageId, pageParamJson, pageUrlJson, unionTypeId);

            #region unionTypeId 为回复消息的时候,素材类型必须有值,MenuUrl必须为空,反之 清空表中的所有素材类型,MuneUrl必须有值

            var mappingBll = new WMenuMTextMappingBLL(CurrentUserInfo);

            var mappingEntity = mappingBll.QueryByEntity(new WMenuMTextMappingEntity()
            {
                MenuId = rd.MenuId
            }, null);

            if (mappingEntity.Length > 0)
            {
                mappingBll.Delete(mappingEntity);
            }

            if (unionTypeId == 2)
            {
                if (messageType == "3")
                {
                    var textMappingEntity = new WMenuMTextMappingEntity();
                    foreach (var materialTextIdInfo in materialTextIds)
                    {
                        textMappingEntity.MappingId    = Guid.NewGuid();
                        textMappingEntity.MenuId       = rd.MenuId;
                        textMappingEntity.DisplayIndex = materialTextIdInfo.DisplayIndex;
                        textMappingEntity.TextId       = materialTextIdInfo.TestId;
                        textMappingEntity.CustomerId   = CurrentUserInfo.ClientID;
                        mappingBll.Create(textMappingEntity);
                    }
                }
            }

            #endregion

            return(rd);
        }
        const int ERROR_LOAD_WRONG  = 302; //打开出错
        protected override GetSetoffToolDetailRD ProcessRequest(APIRequest <GetSetoffToolDetailRP> pRequest)
        {
            string content    = string.Empty;
            string customerId = string.Empty;
            GetSetoffToolDetailRD setoffToolDetailRD = new GetSetoffToolDetailRD();
            var para = pRequest.Parameters;

            customerId = CurrentUserInfo.CurrentUser.customer_id;
            try
            {
                var    imageUrl              = string.Empty;
                Random ro                    = new Random();
                var    iUp                   = 100000000;
                var    iDown                 = 50000000;
                var    rpVipDCode            = 0;                   //临时二维码
                var    iResult               = ro.Next(iDown, iUp); //随机数
                var    userQrCodeBll         = new WQRCodeManagerBLL(CurrentUserInfo);
                var    imgBll                = new ObjectImagesBLL(CurrentUserInfo);
                var    setOffPosterBLL       = new SetoffPosterBLL(CurrentUserInfo);
                var    SetoffToolUserViewBLL = new SetoffToolUserViewBLL(CurrentUserInfo);
                var    SetoffToolsBll        = new SetoffToolsBLL(CurrentUserInfo);
                var    SetOffPosterInfo      = setOffPosterBLL.QueryByEntity(new SetoffPosterEntity()
                {
                    SetoffPosterID = new Guid(para.ObjectId)
                }, null);                                                                                                                         //获取集客海报信息
                var setoffEventBLL  = new SetoffEventBLL(CurrentUserInfo);
                var setoffEventInfo = setoffEventBLL.QueryByEntity(new SetoffEventEntity()
                {
                    Status = "10", SetoffType = 1, CustomerId = customerId
                }, null);
                //var SetoffToolsInfo = SetoffToolsBll.QueryByEntity(new SetoffToolsEntity() { ObjectId = para.ObjectId, Status = "10", ToolType = para.ToolType, SetoffEventID = setoffEventInfo[0].SetoffEventID }, null);//获取工具信息
                //VipDcode=9生成永久二维码
                if (para.VipDCode == 9)
                {
                    //根据分享人ID和对象ID获取永久二维码信息
                    var userQrCode = userQrCodeBll.QueryByEntity(new WQRCodeManagerEntity()
                    {
                        ObjectId = para.ObjectId
                    }, null);
                    if (userQrCode != null && userQrCode.Length > 0)
                    {
                        if (para.ToolType == "Coupon")//如果类型为优惠券则返回二维码
                        {
                            setoffToolDetailRD.ToolType = para.ToolType;
                        }
                        if (para.ToolType == "SetoffPoster")//如果为集客海报则返回背景图和二维码
                        {
                            if (SetOffPosterInfo != null)
                            {
                                var backImgInfo = imgBll.QueryByEntity(new ObjectImagesEntity()
                                {
                                    ObjectId = SetOffPosterInfo[0].ImageId
                                }, null);
                                setoffToolDetailRD.ToolType   = para.ToolType;
                                setoffToolDetailRD.imageUrl   = userQrCode[0].ImageUrl;
                                setoffToolDetailRD.paraTemp   = userQrCode[0].QRCode;
                                setoffToolDetailRD.backImgUrl = backImgInfo[0].ImageURL;
                            }
                        }
                        setoffToolDetailRD.imageUrl = userQrCode[0].ImageUrl;
                        setoffToolDetailRD.paraTemp = userQrCode[0].QRCode;
                        return(setoffToolDetailRD);
                    }
                    //获取当前二维码 最大值
                    iResult    = new WQRCodeManagerBLL(CurrentUserInfo).GetMaxWQRCod() + 1;
                    rpVipDCode = 1;
                }

                #region 获取微信帐号
                var server = new WApplicationInterfaceBLL(CurrentUserInfo);
                var wxObj  = new WApplicationInterfaceEntity();
                wxObj = server.QueryByEntity(new WApplicationInterfaceEntity {
                    CustomerId = customerId
                }, null).FirstOrDefault();
                if (wxObj == null)
                {
                    throw new APIException("不存在对应的微信帐号.")
                          {
                              ErrorCode = ERROR_NULL_WXOBJ
                          };
                }
                else
                {
                    var commonServer = new CommonBLL();
                    //rpVipDCode 二维码类型  0: 临时二维码  1:永久二维码
                    imageUrl = commonServer.GetQrcodeUrl(wxObj.AppID, wxObj.AppSecret, rpVipDCode.ToString(""), iResult, CurrentUserInfo);//iResult作为场景值ID,临时二维码时为32位整型,永久二维码时只支持1--100000
                    //供本地测试时使用  "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQGN7zoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL1dreENCS1htX0xxQk94SEJ6MktIAAIEUk88VwMECAcAAA==";
                }
                #endregion

                if (para.VipDCode == 9 && !string.IsNullOrEmpty(imageUrl))    //永久二维码
                {
                    #region 创建店员永久二维码匹配表
                    var    userQrTypeBll = new WQRCodeTypeBLL(CurrentUserInfo);
                    string pTypeCode     = string.Empty;
                    if (para.ToolType.ToLower() == "coupon")
                    {
                        pTypeCode = "CouponQrCode";
                    }
                    if (para.ToolType.ToLower() == "setoffposter")
                    {
                        pTypeCode = "SetoffPosterQrCode";
                    }
                    if (para.ToolType.ToLower() == "superretail")
                    {
                        pTypeCode = "SuperRetailQrCode";
                    }
                    var userQrType = userQrTypeBll.QueryByEntity(new WQRCodeTypeEntity()
                    {
                        TypeCode = pTypeCode
                    }, null);                                                                                            //"SuperRetailQrCode=超级分销商二维码"
                    if (userQrType != null && userQrType.Length > 0)
                    {
                        var userQrcodeBll = new WQRCodeManagerBLL(CurrentUserInfo);
                        var userQrCode    = new WQRCodeManagerEntity();
                        userQrCode.QRCode        = iResult.ToString();//记录传过去的二维码场景值
                        userQrCode.QRCodeTypeId  = userQrType[0].QRCodeTypeId;
                        userQrCode.IsUse         = 1;
                        userQrCode.CustomerId    = customerId;
                        userQrCode.ImageUrl      = imageUrl;
                        userQrCode.ApplicationId = wxObj.ApplicationId;
                        //objectId 为集客海报ID或者优惠券ID
                        userQrCode.ObjectId = para.ObjectId;
                        userQrcodeBll.Create(userQrCode);
                    }
                    #endregion
                }
                else
                {
                    #region 创建临时匹配表
                    VipDCodeBLL    vipDCodeServer = new VipDCodeBLL(CurrentUserInfo);
                    VipDCodeEntity info           = new VipDCodeEntity();
                    info.DCodeId    = iResult.ToString();//记录传过去的二维码场景值****(保存到数据库时没加空格)
                    info.CustomerId = customerId;
                    VipBLL vipBll = new VipBLL(CurrentUserInfo);
                    info.UnitId      = "";
                    info.Status      = "0";
                    info.IsReturn    = 0;
                    info.DCodeType   = para.VipDCode;
                    info.CreateBy    = CurrentUserInfo.UserID;
                    info.ImageUrl    = imageUrl;
                    info.VipId       = "";
                    info.ObjectId    = para.ObjectId;   //工具对象ID(优惠券或集客海报对象ID)
                    info.OwnerUserId = para.ShareVipId; //分享人ID
                    vipDCodeServer.Create(info);
                    #endregion
                }
                int flag         = 0;//定义是否需要新增打开数据,0=不需要新增,1=需要新增
                var UserViewData = SetoffToolUserViewBLL.QueryByEntity(new SetoffToolUserViewEntity()
                {
                    ObjectId = para.ObjectId, UserID = CurrentUserInfo.UserID
                }, null);
                if (!string.IsNullOrEmpty(para.SetoffToolID))
                {
                    UserViewData = SetoffToolUserViewBLL.QueryByEntity(new SetoffToolUserViewEntity()
                    {
                        ObjectId = para.ObjectId, UserID = CurrentUserInfo.UserID, SetoffToolID = new Guid(para.SetoffToolID)
                    }, null);
                }
                if (UserViewData.Length == 0 && !string.IsNullOrEmpty(para.SetoffToolID) && para.PlatformType != "3")
                {
                    flag = 1;                  //当为1时进行增加打开工具记录
                }
                if (para.ToolType == "Coupon") //如果类型为优惠券则返回二维码
                {
                    #region 用户领优惠券过程
                    var CouponTypeBLL       = new CouponTypeBLL(CurrentUserInfo);
                    var couponBLL           = new CouponBLL(CurrentUserInfo);
                    var CouponSourceBLL     = new CouponSourceBLL(CurrentUserInfo);
                    var VipCouponMappingBLL = new VipCouponMappingBLL(CurrentUserInfo);

                    int?SurplusCount   = 0; //先获得剩余张数
                    int hasCouponCount = 0; //已领张数 如果>0表示已领取过就不让他领,=0就领取
                    var couponTypeInfo = CouponTypeBLL.QueryByEntity(new CouponTypeEntity()
                    {
                        CouponTypeID = new Guid(para.ObjectId)
                    }, null);

                    if (couponTypeInfo != null)
                    {
                        string couponIsVocher = string.Empty;
                        if (couponTypeInfo[0].IsVoucher == null)
                        {
                            SurplusCount = couponTypeInfo[0].IssuedQty - 0;
                        }
                        else
                        {
                            SurplusCount = couponTypeInfo[0].IssuedQty - couponTypeInfo[0].IsVoucher;
                        }
                        if (SurplusCount != 0 && para.ShareVipId != null && para.ShareVipId != "")// 通过列表进详细自己不能领券
                        {
                            //当剩余数量不为0时,进行下一步判断是否存在已领券的信息
                            hasCouponCount = VipCouponMappingBLL.GetReceiveCouponCount(CurrentUserInfo.UserID, para.ObjectId, "Share");
                            if (hasCouponCount == 0)//如果等于零,开始领券流程
                            {
                                //关联优惠券让用户领券
                                var redisVipMappingCouponBLL = new JIT.CPOS.BS.BLL.RedisOperationBLL.Coupon.RedisVipMappingCouponBLL();
                                try
                                {
                                    //执行领取操作
                                    redisVipMappingCouponBLL.InsertDataBase(CurrentUserInfo.CurrentUser.customer_id, CurrentUserInfo.UserID, para.SetoffToolID, "Share", new CC_Coupon()
                                    {
                                        CustomerId   = CurrentUserInfo.CurrentUser.customer_id,
                                        CouponTypeId = para.ObjectId
                                    });
                                    setoffToolDetailRD.Name = couponTypeInfo[0].CouponTypeName + ",已飞入您的账户";
                                }
                                catch (Exception ex)
                                {
                                    setoffToolDetailRD.Name = "很遗憾此次优惠券" + couponTypeInfo[0].CouponTypeName + "的分享已失效,下次请及时领取.";
                                }
                            }
                        }
                        else
                        {
                            //如果剩余数量为0时,给出已领完提示
                            if (para.ShareVipId != null && para.ShareVipId != "")
                            {
                                setoffToolDetailRD.Name = "很遗憾您来迟一步优惠券" + couponTypeInfo[0].CouponTypeName + "已被领完.";
                                //throw new APIException("很遗憾您来迟一步券已被领完.") { ErrorCode = ERROR_LOAD_WRONG };
                            }
                        }
                        if (setoffToolDetailRD.Name == null || setoffToolDetailRD.Name == "")
                        {
                            setoffToolDetailRD.Name = couponTypeInfo[0].CouponTypeName;
                        }
                        setoffToolDetailRD.StartTime = couponTypeInfo[0].BeginTime == null?Convert.ToDateTime(couponTypeInfo[0].CreateTime).ToString("yyyy-MM-dd") : Convert.ToDateTime(couponTypeInfo[0].BeginTime).ToString("yyyy-MM-dd");

                        setoffToolDetailRD.EndTime     = couponTypeInfo[0].EndTime == null ? "" : Convert.ToDateTime(couponTypeInfo[0].EndTime).ToString("yyyy-MM-dd");
                        setoffToolDetailRD.ServiceLife = couponTypeInfo[0].ServiceLife.ToString();
                    }
                    #endregion
                    setoffToolDetailRD.ToolType = para.ToolType;                     //返回工具类别
                    setoffToolDetailRD.imageUrl = imageUrl;                          //返回临时二维码
                    setoffToolDetailRD.paraTemp = iResult.ToString().Insert(4, " "); //加空格,加空格有什么作用?
                }
                if (para.ToolType == "SetoffPoster")                                 //如果为集客海报则返回背景图和二维码
                {
                    if (SetOffPosterInfo != null && SetOffPosterInfo.Length > 0)
                    {
                        var backImgInfo = imgBll.QueryByEntity(new ObjectImagesEntity()
                        {
                            ImageId = SetOffPosterInfo[0].ImageId
                        }, null);
                        setoffToolDetailRD.ToolType   = para.ToolType;
                        setoffToolDetailRD.imageUrl   = imageUrl;
                        setoffToolDetailRD.paraTemp   = iResult.ToString().Insert(4, " "); //加空格,加空格有什么作用?
                        setoffToolDetailRD.backImgUrl = backImgInfo[0].ImageURL;
                        setoffToolDetailRD.Name       = SetOffPosterInfo[0].Name;
                    }
                }
                if (flag == 1)//当为1是需进行打开工具的记录
                {
                    var SetoffToolUserView = new SetoffToolUserViewEntity();
                    SetoffToolUserView.SetoffToolUserViewID = Guid.NewGuid();
                    SetoffToolUserView.SetoffEventID        = setoffEventInfo[0].SetoffEventID;
                    SetoffToolUserView.SetoffToolID         = new Guid(para.SetoffToolID);
                    SetoffToolUserView.ToolType             = para.ToolType;
                    SetoffToolUserView.ObjectId             = para.ObjectId;
                    SetoffToolUserView.NoticePlatformType   = 1;
                    SetoffToolUserView.UserID         = CurrentUserInfo.UserID;
                    SetoffToolUserView.IsOpen         = 1;
                    SetoffToolUserView.OpenTime       = System.DateTime.Now;
                    SetoffToolUserView.CustomerId     = customerId;
                    SetoffToolUserView.CreateTime     = System.DateTime.Now;
                    SetoffToolUserView.CreateBy       = CurrentUserInfo.UserID;
                    SetoffToolUserView.LastUpdateTime = System.DateTime.Now;
                    SetoffToolUserView.LastUpdateBy   = CurrentUserInfo.UserID;
                    SetoffToolUserView.IsDelete       = 0;
                    SetoffToolUserViewBLL.Create(SetoffToolUserView);
                }
            }
            catch (Exception ex)
            {
                throw new APIException(ex.Message)
                      {
                          ErrorCode = ERROR_CODES.DEFAULT_ERROR
                      };
            }
            return(setoffToolDetailRD);
        }
Beispiel #16
0
        /// <summary>
        /// 推送图文消息
        /// </summary>
        /// <param name="materialId"></param>
        public void GetImageText(string materialId, string WeiXin, string OpenId)
        {
            Loggers.Debug(new DebugLogInfo()
            {
                Message = string.Format("中欧扫描--关注materialId 进入 materialId:{0},WeiXin:{1},OpenId:{2}", materialId, WeiXin, OpenId)
            });
            try
            {
                var dsMaterialText = new WMaterialTextDAO(loggingSessionInfo).GetMaterialTextByID(materialId);
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("中欧扫描--关注loggingSessionInfo 进入 loggingSessionInfo:{0}", loggingSessionInfo.CurrentUser.customer_id)
                });
                if (dsMaterialText != null && dsMaterialText.Tables.Count > 0 && dsMaterialText.Tables[0].Rows.Count > 0)
                {
                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = string.Format("中欧扫描--关注materialId 进入 dsMaterialText:")
                    });
                    var newsList = new List <NewsEntity>();

                    foreach (DataRow dr in dsMaterialText.Tables[0].Rows)
                    {
                        newsList.Add(new NewsEntity()
                        {
                            title       = dr["Title"].ToString(),
                            description = dr["Author"].ToString(),
                            picurl      = dr["CoverImageUrl"].ToString(),
                            url         = dr["OriginalUrl"].ToString()
                        });
                    }
                    JIT.CPOS.BS.BLL.WX.CommonBLL commonService = new WX.CommonBLL();
                    SendMessageEntity            sendInfo      = new SendMessageEntity();
                    sendInfo.msgtype  = "news";
                    sendInfo.touser   = OpenId;
                    sendInfo.articles = newsList;
                    WApplicationInterfaceBLL waServer = new WApplicationInterfaceBLL(loggingSessionInfo);
                    var waObj = waServer.QueryByEntity(new WApplicationInterfaceEntity
                    {
                        WeiXinID = WeiXin
                    }, null);
                    if (waObj == null || waObj.Length == 0 || waObj[0] == null)
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("中欧扫描--关注materialId 进入 waObj为空:}")
                        });
                    }
                    else
                    {
                        string appID     = string.Empty;
                        string appSecret = string.Empty;
                        appID     = waObj[0].AppID;
                        appSecret = waObj[0].AppSecret;
                        JIT.CPOS.BS.Entity.WX.ResultEntity resultInfo = new JIT.CPOS.BS.Entity.WX.ResultEntity();
                        resultInfo = commonService.SendMessage(sendInfo, appID, appSecret, loggingSessionInfo);
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("中欧扫描--关注materialId 进入 waObj:appID:{0},appSecret {1}", appID, appSecret)
                        });
                    }
                }
            }
            catch (Exception ex) {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = string.Format("中欧扫描--关注GetImageText 进入 错误:{0}", ex.ToString())
                });
            }
        }
        /// <summary>
        ///
        /// </summary>
        public string GetWQRCodeTypeData()
        {
            var billService = new WQRCodeTypeBLL(new SessionManager().CurrentUserLoginInfo);
            var wApplicationInterfaceBLL = new WApplicationInterfaceBLL(new SessionManager().CurrentUserLoginInfo);
            //IList<BillStatusModel> list = new List<BillStatusModel>();
            //list.Add(new BillStatusModel() { Id = "1", Description = "基本" });
            //list.Add(new BillStatusModel() { Id = "2", Description = "高级" });

            string key = "";

            if (Request("pid") != null && Request("pid") != string.Empty)
            {
                key = Request("pid").ToString().Trim();
            }
            string type = "";

            if (Request("type") != null && Request("type") != string.Empty)
            {
                type = Request("type").ToString().Trim();
            }

            var appId = "";

            if (type == "2")
            {
                var appObjs = wApplicationInterfaceBLL.QueryByEntity(new WApplicationInterfaceEntity()
                {
                    ApplicationId = key
                }, null);
                if (appObjs != null && appObjs.Length > 0)
                {
                    appId = appObjs[0].ApplicationId;
                }
                else
                {
                    appId = "-99";
                }
            }
            else
            {
                var appObjs = wApplicationInterfaceBLL.QueryByEntity(new WApplicationInterfaceEntity()
                {
                    WeiXinID = key
                }, null);
                if (appObjs != null && appObjs.Length > 0)
                {
                    appId = appObjs[0].ApplicationId;
                }
                else
                {
                    appId = "-99";
                }
            }

            var list = billService.GetList(new WQRCodeTypeEntity()
            {
                ApplicationId = appId
            }, 0, 1000);

            string content = string.Empty;

            var jsonData = new JsonData();

            jsonData.totalCount = list.Count.ToString();
            jsonData.data       = list;

            content = jsonData.ToJSON();
            return(content);
        }
Beispiel #18
0
        public string SetVipInfoByToken(string token, string openId, LoggingSessionInfo loggionSesionInfo, HttpResponse Response)
        {
            string vipId = string.Empty;
            var    url   = "https://api.weixin.qq.com/sns/userinfo?";

            var postData = "access_token=" + token + "&openid=" + openId + "&lang=zh_CN";

            // Response.Write(url + postData);

            string method = "GET";
            // var data = HttpWebClient.DoHttpRequest(url, postData);
            var data     = CommonBLL.GetRemoteData(url + postData, method, string.Empty);
            var openInfo = data.DeserializeJSONTo <WxOpenInfoResponse>();

            if (openInfo == null)
            {
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = "获取微信用户信息失败:" + data.ToJSON()
                });
                return(vipId);
            }
            else
            {
                try
                {
                    //insert into vip
                    CPOS.Common.DownloadImage downloadServer = new DownloadImage();
                    string downloadImageUrl = ConfigurationManager.AppSettings["website_WWW"];
                    var    headimgurl       = downloadServer.DownloadFile(openInfo.headimgurl, downloadImageUrl);

                    vipId = BaseService.NewGuidPub();
                    VipBLL vipServiceUnion = new VipBLL(loggionSesionInfo);

                    var vipInfo = new VipEntity();
                    vipInfo.VIPID            = vipId;
                    vipInfo.WeiXinUserId     = openId;                        //openId微信提供
                    vipInfo.City             = openInfo.city;                 //城市,微信提供
                    vipInfo.Gender           = Convert.ToInt32(openInfo.sex); //性别,微信提供
                    vipInfo.VipName          = openInfo.nickname;             //微信昵称,微信提供
                    vipInfo.VipCode          = vipServiceUnion.GetVipCode();
                    vipInfo.UnionID          = openInfo.unionid;
                    vipInfo.VipSourceId      = "3";                                        //写死
                    vipInfo.HeadImgUrl       = headimgurl;                                 //注意,需要先传到我们本地服务器,可以参考(需要download下来)
                    vipInfo.ClientID         = loggionSesionInfo.ClientID;                 //客户标识
                    vipInfo.RegistrationTime = DateTime.Now;
                    vipInfo.Status           = 0;                                          //客户没有关注
                    vipInfo.VipPasswrod      = "e10adc3949ba59abbe56e057f20f883e";         //初始密码123456
                    UnitService unitServer = new UnitService(loggionSesionInfo);
                    vipInfo.CouponInfo = unitServer.GetUnitByUnitTypeForWX("总部", null).Id; //获取总部门店标识

                    var    wappBll    = new WApplicationInterfaceBLL(loggionSesionInfo);
                    string weixinId   = "";
                    var    wappEntity = wappBll.QueryByEntity(new WApplicationInterfaceEntity()
                    {
                        CustomerId = loggionSesionInfo.ClientID
                    }, null);
                    if (wappEntity.Length > 0)
                    {
                        weixinId = wappEntity[0].WeiXinID;
                    }
                    vipInfo.WeiXin = weixinId;          //微信号码,通过数据库可以查出


                    vipServiceUnion.Create(vipInfo);
                }
                catch (Exception ex)
                {
                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = "新增微信用户信息失败:" + ex.ToString()
                    });
                }

                return(vipId);
            }
        }