Exemple #1
0
        public IntegralActionResultDto DailySignIn(Guid uid)
        {
            string res = string.Empty;

            using (var db = base.NewDB())
            {
                var dbitem = db.Users.FirstOrDefault(t => t.IsValid == true && t.AuthID == uid);

                if (dbitem == null)
                {
                    throw new Exception("用户异常");
                }

                var bus  = new IntegralBus(db);
                var data = bus.IntegralProcess(dbitem.UserIntegral, "每日签到", null);

                db.SaveChanges();

                var integraldto = new IntegralActionResultDto
                {
                    message = bus.Message,
                    detail  = new IntegralChangeDto
                    {
                        points        = data.Points,
                        totalpoints   = data.UserIntegral.TotalPoints,
                        currentpoints = data.UserIntegral.CurrentPoints
                    }
                };

                return(integraldto);
            }
        }
Exemple #2
0
        public LotteryDto GetLottery(Guid uid, int type)
        {
            using (var db = base.NewDB())
            {
                var bus = new IntegralBus(db);

                var dblottery = db.Lotterys.Single(t => t.IsValid == true && t.Type == type);

                var dbuser = db.Users.Single(t => t.AuthID == uid);

                var dbul = bus.GetUserLottery(dbuser, dblottery);

                db.SaveChanges();

                var res = new LotteryDto
                {
                    id         = dbul.LotteryID,
                    begintime  = DateTime.Now.Date,
                    endtime    = DateTime.Now.Date.AddDays(1).AddSeconds(-1),
                    costpoints = dblottery.CostPoints,
                    chance     = dbul.Chance,
                    isvalid    = dbul.IsValid,
                    prizes     = GetPrizeDtos(dblottery)
                };
                return(res);
            }
        }
Exemple #3
0
        public WinPrizeDto GetWinPrize(Guid uid, int lotteryid)
        {
            using (var db = base.NewDB())
            {
                var bus = new IntegralBus(db);

                var res = new WinPrizeDto();

                var dbuser = db.Users.Single(t => t.AuthID == uid);

                var dbui = dbuser.UserIntegral;

                var dblo = db.Lotterys.Single(t => t.ID == lotteryid);

                var dbul = db.UserLotterys.Single(t => t.UserID == dbuser.ID && t.LotteryID == lotteryid);

                if (dbui.CurrentPoints < dblo.CostPoints)
                {
                    res.remainingchance = dbul.Chance;
                    res.prize           = null;
                    res.message         = "您的积分不足";

                    return(res);

                    //throw new Exception("您的积分不足");
                }

                if (dbul.Chance > 0)
                {
                    var busres = bus.GetWinPrize(dbul);

                    var winprize = busres.detail;

                    //按照积分记录有效期扣除
                    if (busres.issave)
                    {
                        db.SaveChanges();
                    }
                    else
                    {
                        res.remainingchance = dbul.Chance;
                        res.prize           = null;
                        res.message         = bus.Message;

                        return(res);
                    }

                    res.remainingchance = dbul.Chance;

                    if (winprize != null)
                    {
                        res.prize = new PrizeDto
                        {
                            id   = winprize.ID,
                            name = winprize.Name
                        };
                        res.message = string.Empty;
                    }
                    else
                    {
                        res.prize   = null;
                        res.message = "未中奖";
                    }
                }
                else
                {
                    res.remainingchance = 0;
                    res.prize           = null;
                    res.message         = "您的机会已经用完";
                }

                return(res);
            }


            //if (CheckLotteryChance(uid, lotteryid))
            //{
            //    res.remainingchance = 1;
            //    res.prize = new PrizeDto
            //    {
            //        id = 4,
            //        name = "奖品4"
            //    };
            //    res.message = string.Empty;
            //}
            //else
            //{
            //    res.remainingchance = 0;
            //    res.prize = null;
            //    res.message = "您的机会已经用完";
            //}
            //return res;
        }
Exemple #4
0
        public UserDto GetUser(dynamic wxuser)
        {
            if (((IDictionary <string, object>)wxuser).ContainsKey("openid") && !string.IsNullOrEmpty(wxuser.openid))
            {
                using (var db = base.NewDB())
                {
                    string openid = wxuser.openid;

                    var dbitem = db.UserAuths.FirstOrDefault(t => t.IdentityType == "wx" && t.Identifier == openid);

                    if (dbitem == null)
                    {
                        User user = new User();
                        user = db.Users.Add(user);
                        //db.SaveChanges();

                        UserProfile userpf = new UserProfile {
                            ID        = user.ID,
                            NickName  = wxuser.userinfo["nickName"].ToString(),
                            AvatarUrl = wxuser.userinfo["avatarUrl"].ToString()
                        };
                        db.UserProfiles.Add(userpf);
                        //db.SaveChanges();


                        UserAuth ua = new UserAuth
                        {
                            IdentityType = "wx",
                            Identifier   = openid,
                            User         = user
                        };

                        db.UserAuths.Add(ua);


                        Agent agent = new Agent
                        {
                            User = user
                        };
                        db.Agents.Add(agent);

                        UserIntegral ui = new UserIntegral
                        {
                            User = user
                        };
                        db.UserIntegrals.Add(ui);

                        UserAccount uc = new UserAccount
                        {
                            User = user
                        };
                        db.UserAccounts.Add(uc);

                        db.SaveChanges();

                        try
                        {
                            if (!string.IsNullOrEmpty(wxuser.sharecode))
                            {
                                Guid authid = ConvertHelper.StrToGuid(wxuser.sharecode, default(Guid));

                                if (ShareRewardType == 2)
                                {
                                    var useracc = db.UserAccounts.FirstOrDefault(t => t.User.AuthID == authid);
                                    var bus     = new AccountBus(db);
                                    bus.ShareReward(useracc, user);
                                }
                                else
                                {
                                    var shareui = db.UserIntegrals.FirstOrDefault(t => t.User.AuthID == authid);
                                    if (shareui != null)
                                    {
                                        var bus = new IntegralBus(db);
                                        bus.IntegralProcess(shareui, "分享有礼", user);

                                        //分享直接成为上级
                                        var shareagent = shareui.User.Agent;
                                        if (shareagent.IsValid ?? false)
                                        {
                                            agent.ParentAgent = shareui.User.Agent;
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                        }

                        db.SaveChanges();

                        dbitem = db.UserAuths.FirstOrDefault(t => t.IdentityType == "wx" && t.Identifier == openid);
                    }

                    dbitem.LastActiveTime = DateTime.Now;
                    db.SaveChanges();
                    //dbitem = db.UserAuths.FirstOrDefault(t => t.IdentityType == "wx" && t.Identifier == openid);

                    UserDto userdto = new UserDto
                    {
                        //id = dbitem.User.ID,
                        authid = dbitem.User.AuthID,
                        //agentcode = dbitem.User.UserProfile.AgentCode,
                        //agentcode = dbitem.User.Agent.Code,
                        //isagentvalid = dbitem.User.Agent.IsValid,
                        isvalid    = dbitem.User.IsValid,
                        isverified = dbitem.User.UserProfile.IsVerified
                    };

                    if (dbitem.User.UserProfile.NickName != wxuser.userinfo["nickName"].ToString())
                    {
                        dbitem.User.UserProfile.NickName = wxuser.userinfo["nickName"].ToString();
                    }

                    if (dbitem.User.UserProfile.AvatarUrl != wxuser.userinfo["avatarUrl"].ToString())
                    {
                        dbitem.User.UserProfile.AvatarUrl = wxuser.userinfo["avatarUrl"].ToString();
                    }

                    if (db.Entry(dbitem.User.UserProfile).State == EntityState.Modified)
                    {
                        db.SaveChanges();
                    }

                    //if (dbitem.User.Agent == null)
                    //{
                    //    Agent agent = new Agent
                    //    {
                    //        User = dbitem.User
                    //    };
                    //    dbitem.User.Agent = db.Agents.Add(agent);

                    //    db.SaveChanges();
                    //}

                    if (dbitem.User.Agent != null && (dbitem.User.Agent.IsValid ?? false))
                    {
                        userdto.agentcode    = dbitem.User.Agent.Code;
                        userdto.isagentvalid = dbitem.User.Agent.IsValid;
                    }

                    var signin = db.IntegralSignIns.FirstOrDefault(t => t.UserIntegral.User.ID == dbitem.User.ID);

                    if (signin != null && signin.LastTime != null && signin.LastTime.Value.Date == DateTime.Now.Date)
                    {
                        userdto.issignin = true;
                    }

                    //return new ArticleDto { content = dbitem == null ? null : dbitem.Content };
                    return(userdto);
                }
            }
            else
            {
                return(null);
            }
        }