コード例 #1
0
ファイル: BLLSignIn.cs プロジェクト: uvbs/mmp
        /// <summary>
        /// 签到
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="page"></param>
        /// <param name="longitude"></param>
        /// <param name="latitude"></param>
        /// <param name="websiteOwner"></param>
        /// <param name="total"></param>
        /// <returns></returns>
        public bool AddSignInLog(int autoId, string userId, double longitude, double latitude, string websiteOwner, out string errmsg)
        {
            errmsg = "";
            StringBuilder sbSql = new StringBuilder();

            sbSql.AppendFormat(" AutoID={0} and IsDelete=0 ", autoId);
            if (!string.IsNullOrWhiteSpace(websiteOwner))
            {
                sbSql.AppendFormat(" and WebsiteOwner='{0}' ", websiteOwner);
            }
            SignInAddress signInAddress = Get <SignInAddress>(sbSql.ToString());

            if (signInAddress == null)
            {
                errmsg = "签到地点未找到";
                return(false);
            }
            signInAddress.Distance = GeolocationHelper.ComputeDistance(longitude, latitude
                                                                       , Convert.ToDouble(signInAddress.Longitude), Convert.ToDouble(signInAddress.Latitude));
            SignInLog signInLog = new SignInLog();

            signInLog.UserID       = userId;
            signInLog.WebsiteOwner = websiteOwner;
            signInLog.IP           = ZentCloud.Common.MySpider.GetClientIP();
            signInLog.CreateDate   = DateTime.Now;
            signInLog.Longitude    = longitude.ToString();
            signInLog.Latitude     = latitude.ToString();
            signInLog.AddressId    = signInAddress.AutoID;
            signInLog.Address      = signInAddress.Address;
            signInLog.Distance     = signInAddress.Distance;
            string DistanceString = string.Empty;

            if (signInAddress.Distance > signInAddress.Range)
            {
                signInLog.Status = 0;
                signInLog.Remark = "签到失败,超出有效距离";
            }
            else
            {
                signInLog.Status = 1;
                signInLog.Remark = "签到成功";
            }
            if (!Add(signInLog))
            {
                errmsg = "签到出错";
                return(false);
            }
            errmsg = signInLog.Remark;
            return(signInLog.Status == 1);
        }
コード例 #2
0
ファイル: BLLSignIn.cs プロジェクト: uvbs/mmp
        /// <summary>
        /// 智能签到
        /// </summary>
        /// <param name="rows"></param>
        /// <param name="page"></param>
        /// <param name="longitude"></param>
        /// <param name="latitude"></param>
        /// <param name="websiteOwner"></param>
        /// <param name="total"></param>
        /// <returns></returns>
        public bool AddSignInLogAuto(string userId, double longitude, double latitude, string websiteOwner, out string errmsg)
        {
            errmsg = "";
            StringBuilder sbSql = new StringBuilder();

            sbSql.AppendFormat(" 1=1 ");
            if (!string.IsNullOrWhiteSpace(websiteOwner))
            {
                sbSql.AppendFormat(" and WebsiteOwner='{0}' ", websiteOwner);
            }
            List <SignInAddress> list = GetList <SignInAddress>(sbSql.ToString());

            if (list.Count == 0)
            {
                errmsg = "请设置签到地点";
                return(false);
            }
            for (int i = 0; i < list.Count; i++)
            {
                list[i].Distance = GeolocationHelper.ComputeDistance(longitude, latitude
                                                                     , Convert.ToDouble(list[i].Longitude), Convert.ToDouble(list[i].Latitude));
            }
            List <SignInAddress> tempList = list.Where(p => p.Distance <= p.Range).ToList();

            SignInLog     signInLog      = new SignInLog();
            SignInAddress nearestAddress = new SignInAddress();

            signInLog.UserID       = userId;
            signInLog.WebsiteOwner = websiteOwner;
            signInLog.IP           = ZentCloud.Common.MySpider.GetClientIP();
            signInLog.CreateDate   = DateTime.Now;
            signInLog.Longitude    = longitude.ToString();
            signInLog.Latitude     = latitude.ToString();
            string distanceString = string.Empty;

            if (tempList.Count > 0)
            {
                nearestAddress      = tempList.OrderBy(p => p.Distance).FirstOrDefault();
                signInLog.AddressId = nearestAddress.AutoID;
                signInLog.Address   = nearestAddress.Address;
                signInLog.Distance  = nearestAddress.Distance;
                signInLog.Status    = 1;
                distanceString      = nearestAddress.Distance > 1000 ? (nearestAddress.Distance / 1000).ToString("f2") + "千米"
                    : nearestAddress.Distance.ToString("f2") + "米";
                signInLog.Remark = "签到成功,距离[" + nearestAddress.Address + "]" + distanceString;
            }
            else
            {
                nearestAddress      = list.OrderBy(p => p.Distance).FirstOrDefault();
                signInLog.AddressId = nearestAddress.AutoID;
                signInLog.Address   = nearestAddress.Address;
                signInLog.Distance  = nearestAddress.Distance;
                signInLog.Status    = 0;
                distanceString      = nearestAddress.Distance > 1000 ? (nearestAddress.Distance / 1000).ToString("f2") + "千米"
                    : nearestAddress.Distance.ToString("f2") + "米";

                double moreDistance       = signInLog.Distance - nearestAddress.Range;
                string moreDistanceString = string.Empty;
                moreDistanceString = moreDistance > 1000 ? (moreDistance / 1000).ToString("f2") + "千米" : moreDistance.ToString("f2") + "米";

                signInLog.Remark = "签到失败,距离最近签到地址[" + nearestAddress.Address + "]"
                                   + distanceString + ",超出有效距离"
                                   + moreDistanceString;
            }
            if (!Add(signInLog))
            {
                errmsg = "签到出错";
                return(false);
            }
            errmsg = signInLog.Remark;
            return(signInLog.Status == 1);
        }