Example #1
0
        public JArray saveReward(string userId, string accessToken, string projId, string connectorName, string connectTel, JObject info)
        {
            // TODO: 参数检查
            if (connectorName.Length > 40 || connectTel.Length > 40)
            {
                return(getErrorRes(DaoReturnCode.C_InvalidParamLen));
            }
            var infoJA = info["info"] as JArray;

            if (infoJA != null && infoJA.Count > 0)
            {
                if (connectorName.Length == 0 || connectTel.Length == 0)
                {
                    return(getErrorRes(DaoReturnCode.C_InvalidParamLen));
                }
                if (!infoJA.All(p => {
                    if (p["rewardId"] == null ||
                        p["rewardName"] == null ||
                        p["rewardDesc"] == null ||
                        p["price"] == null ||
                        p["limitFlag"] == null ||
                        p["distributeTimeFlag"] == null ||
                        p["distributeWay"] == null ||
                        p["note"] == null)
                    {
                        return(false);
                    }
                    var len = p["rewardName"].ToString().Length;
                    if (len == 0 || len > 40)
                    {
                        return(false);
                    }
                    len = p["rewardDesc"].ToString().Length;
                    if (len == 0 || len > 500)
                    {
                        return(false);
                    }
                    if (!checkIntFmt(p["price"]))
                    {
                        return(false);
                    }
                    var tp = p["limitFlag"].ToString();
                    if (tp == SelectKey.Yes)
                    {
                        if (p["limitMax"] == null || !checkIntFmt(p["limitMax"]))
                        {
                            return(false);
                        }
                    }
                    len = p["note"].ToString().Length;
                    if (len > 100)
                    {
                        return(false);
                    }
                    return(true);
                }))
                {
                    return(getErrorRes(DaoReturnCode.C_InvalidParamFmt));
                }
            }

            //
            string code;

            if (!checkToken(userId, accessToken, out code))
            {
                return(getErrorRes(code));
            }
            string findStr = new JObject {
                { "projId", projId }, { "userId", userId }, { "role", TeamRoleType.Admin }
            }.ToString();

            if (mh.GetDataCount(dao_mongodbConnStr, dao_mongodbDatabase, projTeamInfoCol, findStr) == 0)
            {
                return(getErrorRes(DaoReturnCode.T_NoPermissionStartFinance));
            }
            //
            findStr = new JObject {
                { "projId", projId }
            }.ToString();
            string fieldStr = new JObject {
                { "connectorName", 1 }, { "connectorTel", 1 }, { "fundName", 1 }, { "deployContractFlag", 1 }, { "reserveTokenSetFlag", 1 }, { "rewardSetFlag", 1 }
            }.ToString();
            var queryRes = mh.GetData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceCol, findStr, fieldStr);

            if (queryRes.Count == 0)
            {
                return(getErrorRes(DaoReturnCode.InvalidOperate));
            }
            //
            if (queryRes[0]["deployContractFlag"].ToString() != SkOp.FinishOp ||
                queryRes[0]["reserveTokenSetFlag"].ToString() != SkOp.FinishOp)
            {
                return(getErrorRes(DaoReturnCode.InvalidOperate));
            }

            if (queryRes[0]["connectorName"].ToString() != connectorName ||
                queryRes[0]["connectorTel"].ToString() != connectTel ||
                queryRes[0]["rewardSetFlag"].ToString() != SkOp.FinishOp)
            {
                string updateStr = new JObject {
                    { "$set", new JObject {
                          { "connectorName", connectorName }, { "connectorTel", connectTel }, { "rewardSetFlag", SkOp.FinishOp }
                      } }
                }.ToString();
                mh.UpdateData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceCol, updateStr, findStr);
            }
            //
            string fundName   = queryRes[0]["fundName"].ToString();
            var    rewardList = (JArray)info["info"];

            // TODO: 增删改查
            var nlist = new List <JToken>();

            findStr = new JObject {
                { "projId", projId }, { "activeState", RewardActiveState.Valid_Yes }
            }.ToString();
            queryRes = mh.GetData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceRewardCol, findStr);
            if (queryRes.Count == 0)
            {
                nlist = rewardList.ToList();
            }
            else
            {
                foreach (var item in rewardList)
                {
                    var id = item["rewardId"].ToString();
                    if (id.Trim().Length == 0)
                    {
                        nlist.Add(item);
                        continue;
                    }
                    var tItems = queryRes.Where(p => p["rewardId"].ToString() == id).ToArray();
                    if (tItems.Count() == 0)
                    {
                        continue;
                    }

                    var  tItem = tItems[0];
                    bool eq    = item["rewardName"].ToString() == tItem["rewardName"].ToString() &&
                                 item["rewardDesc"].ToString() == tItem["rewardDesc"].ToString() &&
                                 item["price"].ToString() == tItem["price"].ToString() &&
                                 item["limitFlag"].ToString() == tItem["limitFlag"].ToString() &&
                                 item["limitMax"].ToString() == tItem["limitMax"].ToString() &&
                                 item["distributeTimeFlag"].ToString() == tItem["distributeTimeFlag"].ToString() &&
                                 item["distributeTimeFixYes"].ToString() == tItem["distributeTimeFixYes"].ToString() &&
                                 item["distributeTimeFixNot"].ToString() == tItem["distributeTimeFixNot"].ToString() &&
                                 item["distributeWay"].ToString() == tItem["distributeWay"].ToString()
                    ;
                    if (eq)
                    {
                        continue;
                    }
                    findStr = new JObject {
                        { "rewardId", item["rewardId"] }
                    }.ToString();
                    var updateStr = new JObject {
                        { "$set", new JObject {
                              { "activeState", RewardActiveState.Valid_Not }
                          } }
                    }.ToString();
                    mh.UpdateData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceRewardCol, updateStr, findStr);
                    nlist.Add(item);
                }
                //
                var oIds = queryRes.Select(p => p["rewardId"].ToString()).ToArray();
                foreach (var id in oIds)
                {
                    if (rewardList.All(p => p["rewardId"].ToString() != id))
                    {
                        findStr = new JObject {
                            { "projId", projId }, { "rewardId", id }
                        }.ToString();
                        var updateStr = new JObject {
                            { "$set", new JObject {
                                  { "activeState", RewardActiveState.Valid_Not }
                              } }
                        }.ToString();
                        mh.UpdateData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceRewardCol, updateStr, findStr);
                    }
                }
            }
            //
            var res = nlist.Select(p =>
            {
                p["projId"]         = projId;
                p["rewardId"]       = DaoInfoHelper.genProjRewardId(projId, p["rewardName"].ToString());
                p["fundName"]       = fundName;
                p["activeState"]    = RewardActiveState.Valid_Yes;
                p["hasSellCount"]   = 0;
                p["hasSellCountTp"] = 0;
                return(p);
            }).ToArray();

            if (res.Count() > 0)
            {
                mh.PutData(dao_mongodbConnStr, dao_mongodbDatabase, projFinanceRewardCol, new JArray {
                    res
                });
            }
            return(getRes());
        }