public Membership Register(RegisterWxUserContext context) { using (var database = this.databaseFactory.GenerateDatabase(isWriteOnly: true)) { var queryString = @"[dbo].[spRegisterWeChatUser]"; var parameters = new IDbDataParameter[] { new SqlParameter() { SqlDbType = SqlDbType.Structured, TypeName = "[dbo].[RegisterWeChatUserStructure]", Value = new SqlDataRecord[] { Unity.Convert(context) }, ParameterName = "@wxuser" } }; database.Execute(queryString, parameters, System.Data.CommandType.StoredProcedure); queryString = @"SELECT [src].*, [app].[MerchantId] FROM ( SELECT [user].[Id],[identity].[AppId],[user].[UnionId],[identity].[OpenId],[Mobile], (SELECT SUM([RewardMoney]) FROM [dbo].[RewardLogging] [reward] WHERE [reward].[WxUserId]= [user].[Id] ) AS [RewardMoney] FROM [dbo].[WxUser] [user] LEFT JOIN [dbo].[WxUserIdentity] [identity] ON [identity].[WxUserId] =[user].[Id] WHERE [identity].[AppId] = @appid and [identity].[OpenId] = @openid ) [src] LEFT JOIN [dbo].[MWeChatApp] [app] ON [src].[AppId]= [app].[AppId]" ; return(database.SqlQuerySingleOrDefault <Membership>(queryString, new { @appid = context.WxApp.AppId, @openid = context.Info.OpenId })); } }
public static SqlDataRecord Convert(RegisterWxUserContext model) { if (model == null) { return(null); } var record = new SqlDataRecord(DAOConstants.RegisterWeChatUserStructure); for (var i = 0; i < DAOConstants.RegisterWeChatUserStructure.Length; i++) { switch (DAOConstants.RegisterWeChatUserStructure[i].Name) { case "UnionId": record.SetString(i, model.Info.UnionId); break; case "AppId": record.SetString(i, model.WxApp.AppId); break; case "OpenId": record.SetString(i, model.Info.OpenId); break; case "RegistrySource": record.SetInt32(i, (int)model.WxApp.AppType); break; case "NickName": if (string.IsNullOrEmpty(model.Info.NickName)) { record.SetDBNull(i); } else { record.SetString(i, model.Info.NickName); } break; case "Country": if (string.IsNullOrEmpty(model.Info.Country)) { record.SetDBNull(i); } else { record.SetString(i, model.Info.Country); } break; case "Province": if (string.IsNullOrEmpty(model.Info.Province)) { record.SetDBNull(i); } else { record.SetString(i, model.Info.Province); } break; case "City": if (string.IsNullOrEmpty(model.Info.City)) { record.SetDBNull(i); } else { record.SetString(i, model.Info.City); } break; case "AvatarUrl": if (string.IsNullOrEmpty(model.Info.AvatarUrl)) { record.SetDBNull(i); } else { record.SetString(i, model.Info.AvatarUrl); } break; case "LastUpdatedBy": if (string.IsNullOrEmpty(model.LastUpdateBy)) { record.SetDBNull(i); } else { record.SetString(i, model.LastUpdateBy); } break; case "ScenarioId": if (model.ScenarioId == null) { record.SetDBNull(i); } else { record.SetGuid(i, model.ScenarioId.Value); } break; case "SharedBy": if (string.IsNullOrEmpty(model.SharedBy)) { record.SetDBNull(i); } else { record.SetString(i, model.SharedBy); } break; } } return(record); }